3D 平面とその上の任意の点が与えられ、新しい基底の起源を検討したい場合、次(0,0,0)
のことが可能です。(A) この情報から基底を定義しますか? (B) ワールド空間と新しい基底の間で変換できる変換行列を作成しますか?
変換はアフィンであると想定できます。
どうもありがとう!
3D 平面とその上の任意の点が与えられ、新しい基底の起源を検討したい場合、次(0,0,0)
のことが可能です。(A) この情報から基底を定義しますか? (B) ワールド空間と新しい基底の間で変換できる変換行列を作成しますか?
変換はアフィンであると想定できます。
どうもありがとう!
短い答えはイエスですが、平面しかないので、新しい基底の方向は任意になります。
平面P上に点kがあり、点kを原点にしたいとします。P = (N, d)があります。ここで、 Nは正規化された平面の法線であり、dは原点から平面までの距離です。
この平面上の任意の向きで正規直交基底を決定するには 右R、上U、法線Nの 3 つのベクトルを定義します。
平面の法線に過ぎないNが既にあります
U = (0,1,0)
// If U is pointing in almost the same direction as N, change it
if (U.N > 0.7071) U = (0, 0, 1);
R = normalise (U x N)
U = normalise (N x R) // U was not orthonormal
ここで、行列の 3 行がそれぞれ R、U、および N である 3x3 変換行列Mを定義します。
R
M = ( U )
N
ここで、平面上の点pを点p'に変換したいとします。
p' = M ( p - k )
これらすべてを 1 つの行列で行いたい場合は、M と平行移動ベクトル -k を組み合わせて 4x4 の同次行列にすることができます。ノート:
HTH