{X1、Y1、Z1} と {X2、Y2、Z2} の 2 つの既知の点の間にある 3D に存在する線があります。
また、私は点の 1 つから一定の距離にあることも知っています: D
D を {X1, Y1, Z1} から移動した後のポイントの座標を特定するにはどうすればよいですか?
ありがとう
{X1、Y1、Z1} と {X2、Y2、Z2} の 2 つの既知の点の間にある 3D に存在する線があります。
また、私は点の 1 つから一定の距離にあることも知っています: D
D を {X1, Y1, Z1} から移動した後のポイントの座標を特定するにはどうすればよいですか?
ありがとう
距離 D をポイント 1 からポイント 2 に移動するとします。
P1 = [ X1, Y1, Z1 ]
P2 = [ X2, Y2, Z2 ]
行ベクトルは次のように記述できます。
V = P2 - P1 = [ Xv = X2 - X1, Yv = Y2 - Y1, Zv = Z2 - Z1 ]
線の長さは次のように決定できます。
VL = SQRT(Xv^2 + Yv^2 + Zv^2) // ^2 = squared
ラインのバージョン別名単位ベクトルは、次のように決定できます。
v = V / VL = [Xv / VL, Yv / VL, Zv / VL]
ターゲット ポイント PD は次のように決定できます。
Pd = P1 + D * v // Starting from P1 advance D times v
P1 と v はベクトルで、D はスカラーであることに注意してください。
まず、線分の長さを決定します。
d=sqrt((X1-X2)^2+(Y1-Y2)^2+(Z1-Z2)^2))
D を P1=(X1,Y1,Z1) から P2=(X2,Y2,Z2) に移動しています。これにより、ポイント (X3,Y3,Z3) に移動します。
{XYZ}3={XYZ}1+(D/d)*({XYZ}2-{XYZ}1})
それを X、Y、Z のそれぞれに 1 つずつ、3 つの方程式に展開します。
これは、P1 と P2 の間の D/D であるため機能します。チェック: D=d と言います。次に、正確に P2 にいる必要があります。
2点間のベクトルを取る
<X2-X1, Y2-Y1, Z2-Z1>
これを、同じ方向を指すが長さ 1 の単位ベクトルに変換します。これは、2 点間の距離で割ることによって行います。
<X2-X1, Y2-Y1, Z2-Z1>
---------------------------------------
sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2)
次に、それを D 倍し、元のポイントに加算して新しいポイントを取得します。
<X2-X1, Y2-Y1, Z2-Z1>
(X1, Y1, Z1) + D * ---------------------------------------
sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2)