我有兩個位置,並且想要計算紅色星星的位置。 (我想將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