3Dでポイント座標を決定する
-
08-07-2019 - |
質問
2つの既知のポイント{X1、Y1、Z1}と{X2、Y2、Z2}の間にある3dに存在する線があります。
また、ポイントの1つDに対して一定の距離にあることも知っています
どのように{X1、Y1、Z1}からDを移動した後、私がいるポイントの座標を決定できますか?
ありがとう
解決
距離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)
これは線形結合の問題です:
dist = distance(p1、p2)
距離Dが与えられます
f = D / dist(LineSeg(p1、p2)内のポイントDの小数座標)
pD = LinearCombo(1-f、p1、f、p2)(p1からのポイント距離Dの座標)
所属していません StackOverflow