この問題は、少なくとも2Dでは、可能な解決策のセットを生成すると思います。2Dの場合:
|
-----------+-----------
/|\
/ | \
/ | \
/---+---\VP
/ | \
/ | \
/ | \
/ | \
/ | -- \
/ | | \
/ | | \
上の図では、垂直セグメントと水平セグメントがビュープレーン(VP)の同じ線に投影されます。これを縮尺どおりに描画すると、目から2本の光線が投影されていない線の各終点を通過していることがわかります。この線は多くの位置と回転にある可能性があります-棒を円錐に落とすと想像してください、それは任意の数の位置で動かなくなる可能性があります。
したがって、2D空間では、明確に定義されたセット内に無数のソリューションがあります。
これは3Dに適用されますか?
アルゴリズムは次のようになります。
- 射影行列を反転します
- 長方形の頂点を通過する4つの光線を計算し、歪んだピラミッドを効果的に作成します
- 長方形をピラミッドに合わせてみてください。これはトリッキーなビットであり、ピラミッド内の長方形を精神的に視覚化して、複数の方法で収まるかどうかを確認しようとしています。
編集:あなたがオブジェクトまでの距離を知っていれば、それは取るに足らないものになるでしょう。
V2を編集:
OK、Rnを世界空間の4つの光線とします。つまり、m.Rnで表される、逆行列を介して変換されます。ここで、| Rn | 1であります。したがって、長方形の4つのポイントは次のとおりです。
P1 = aR1
P2 = bR2
P3 = cR3
P4 = dR4
ここで、P1..P4は長方形の円周の周りの点です。これから、少しのベクトル数学を使用して、4つの方程式を導き出すことができます。
|aR1 - bR2| = d1
|cR3 - dR4| = d1
|aR1 - cR3| = d2
|bR2 - dR4| = d2
ここで、d1とd2は長方形の辺の長さであり、a、b、c、dは未知数です。
さて、上記の解決策がないかもしれません。その場合、d1をd2と交換する必要があります。各行を次のように展開できます。
(a.R1x-b.R2x)2 +(a.R1y-b.R2y)2 +(a.R1z-b.R2z)2 = d1 2
どこR1?とR2?は光線1と2のx/y / zコンポーネントです。x、y、zではなく、上記のaとbを解いていることに注意してください。