gpt4 book ai didi

c# - 如何计算 Box2D/Farseer 中夹具和点之间的距离?

转载 作者:行者123 更新时间:2023-11-28 06:23:33 33 4
gpt4 key购买 nike

基本上,我有一个夹具和一个点。我想知道它们之间的距离(而不是它们的中心之间)。

我知道存在 Distance API,但它只适用于 2 个灯具:/

最佳答案

更多的是你应该知道的数学知识。两个物体之间的距离是它们坐标之间的 vector 长度。 Farseer 使用 Xna 类型 Vector2 或 Vector3。只需减去两个所需的 vector 即可得到所需的 vector ,并通过相应 vector 类型上的方法获得长度。夹具的坐标在其Body.Position 下。

对于使用夹具形状到特定点的距离,只需从中创建假的 pointShape(根据需要使用最小半径的圆),然后使用 Distance 类。

float getDistance(Vector2 point, Fixture fixture)
{
var proxyA = new DistanceProxy();
proxyA.Set(fixture.Shape, 0);

var proxyB = new DistanceProxy();
// prepare point shape
var pointShape = new CircleShape(0.0001, 1);
proxyB.Set(pointShape, 0);

Transform transformA;
fixture.Body.GetTransform(out transformA);

Transform transformB = new Transform();
transformB.Set(point, 0);

DistanceOutput distance;
SimplexCache cache;

FarseerPhysics.Collision.Distance.ComputeDistance(out distance, out cache,
new FarseerPhysics.Collision.DistanceInput(){
UseRadii=true,
ProxyA=proxyA,
ProxyB=proxyB,
TransformA=transformA,
TransformB=transformB
});
}

关于c# - 如何计算 Box2D/Farseer 中夹具和点之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916605/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com