我有两个位置,想要计算红星的位置。 (我想把B移到"红星位置"但我不知道坐标。)
我有A和B的位置以及距离位置A的最小距离。所以我的问题是如何计算在指定距离内距离B最近的位置。
希望有人了解我想要完成的事情。
答案 0 :(得分:0)
假设:
然后就是这样做的方法:
以下是一些示例代码:
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
进行比较就可以解决这个问题,如果更低,那么您就完成了。只需在var distance = ...
行之后添加以下代码:
if (distance < wantedDistance)
return B; // or whatever you want to do when "done"
如果您需要在3D空间中执行此操作,只需增加每个计算和diff来处理Z维度。