質問

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の座標)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top