2010-12-07 9 views
0

私は2つのベクトル(X、Y、Z)を持ちます.1つはY=0の上にあり、もう1つはY=0の下にあります。 2つの元のベクトルの間の線がY=0レベルと交差するベクトル(X、Y、Z)を探したいと思います。 どうすればいいですか?3D Line - Plane intersection?

例ポイントA:

X = -43.54235 
Y = 95.2679138 
Z = -98.2120361 

例ポイントB:ユーザーからの2 UnProjectionsから読み取る

X = -43.54235 
Y = 97.23531 
Z = -96.24464 

これらの点をクリックして、私はY=0にunprojectionをターゲットにしようとしています。

(私は3D line plane intersection, with simple planeが見つかりましたが、それは2Dのためだとして受け入れ答えを理解していない)

+0

[3Dライン平面交差](http://stackoverflow.com/questions/5666222/3d-line-plane-intersection)の可能重複 – ideasman42

答えて

3

私は2つのベクトルによって、あなたが実際には2つの点を意味すると思われる、としてこれらの2つの点を結ぶ線と交差したいですY=0によって定義される平面。その場合は

、あなたは2点間のラインの定義を使用することができます:<A,B,C>は、あなたのポイントの一つと<D,E,F>ある

<A + (D - A)*u, B + (E - B)*u, C + (F - C)*u>

は、他の点です。 uは、この線に沿って点を計算するために使用される未定義のスカラです。

あなたが平面Y=0この線と交差しているので、単に「Y」セグメントは0

すなわち、B + (E - B)*u = 0uについて解き、次いで供給あるライン上の点を見つける必要があります元の線方程式に戻ってXとZの成分を見つける。

+0

私にはありませんわかる。私はまだあなたがわからないときにどのように線を定義するのですか?私が最終的にそれを得た場合、スカラーをどのように適用するのですか? –

+0

「u」は不明です。私はそれをこのように置こうとしましょう:ラインは、「ラインアップ」するポイントの束として考えることができます。右? 'u'はあなたが探している行の特定の点を見つける方法です。そしてあなたは 'Y = 0'平面にある単一の点を見つけることを試みています。 'u'(あなたの' Y = 0'節を真にする 'u 'の値が必要であることを知っているので見つけることができる)を得るには、' A +(D - A)* u'をX、またはZを得るために 'C +(F - C)* u'に変換します。 –

+0

' -B /(E-B) 'から' Y = 0'のスカラーをどのように取得するのか分かりません。現在、スカラー尺度はY = 0から遠くに行くほど遠くに見えるように見えます。 –

2

ラインの方程式は、だから、Y = 0が交差点のためのあなたの座標を生成すること

(x–x1)/(x2–x1) = (y–y1)/(y2–y1) = (z–z1)/(z2–z1) 

です。

x = -y1 * (x2-x1)/(y2-y1) + x1 

z = -y1 * (z2-z1) /(y2-y1) + z1 
+0

z = -y1 *(z2-z1)/(y2-y1)+ z1; '? – user8709

+0

@ user8709はい。ありがとう。修正済み –