我有两个位置,并且想要计算红色星星的位置。 (我想将B移到“红星位置”,但我不知道坐标。)按特定距离查找距离目标位置最近的位置
我有A的位置和B以及从位置A.所以最小距离我问题是我如何计算在指定距离内距离B最近的位置。
希望有人明白我想要完成什么。
我有两个位置,并且想要计算红色星星的位置。 (我想将B移到“红星位置”,但我不知道坐标。)按特定距离查找距离目标位置最近的位置
我有A的位置和B以及从位置A.所以最小距离我问题是我如何计算在指定距离内距离B最近的位置。
希望有人明白我想要完成什么。
假设:
然后,这是做到这一点的方式:
下面是一些示例代码:
var wantedDistance = 40.0;
var distance = Math.Sqrt((A.x - B.x)*(A.x - B.x) + (A.y - B.y)*(A.y - B.y));
var diffX = B.x - A.x;
var diffY = B.y - A.y;
var ratio = distance/wantedDistance;
var newDiffX = diffX/ratio;
var newDiffY = diffY/ratio;
var newB = new PointF(A.x + newDiffX, A.y + newDiffY);
在评论,你说,如果B是半径内,那么它是在范围内,因此不应该移动。你只需通过比较distance
和wantedDistance
来处理这个问题,如果更低,那么你就完成了。如果你需要做到这一点在三维空间中,简单地增加每一个计算和DIFF处理Z尺寸以及
if (distance < wantedDistance)
return B; // or whatever you want to do when "done"
:在var distance = ...
行后只需添加这行代码。
工作就像一个魅力! :) 非常感谢! – w20svn
如果B位于外圈内,该怎么办? –
是一个已知的半径? –
这是2D还是3D空间? – Hill