行列の掛け算を理解していれば、理解するのはそれほど難しくありません。あなたのポイントx
が
/a\
\b/,
座標系を次のように回転させますA
。
/3 4\
\5 6/
そしてそれを「動かす」t
/2\
\2/.
後者の行列は、新しい点を取得するためのアフィン変換のコンポーネントですy
。
y = A*x + t = <a'; b'>T //(T means transposed).
ご存知のように、それを取得するには、次のような3 次元行列B
とベクトルを作成できます。x'
/3 4 2\ /a\
B = |5 6 2| , x' = |b|
\0 0 1/ \1/
そのような
/a'\
y' = |b'| = B*x'
\ 1/
そこから抽出できますy
。それがどのように機能するか見てみましょう。元の変換 (加算を使用) では、最初のステップは乗算を実行することです。回転部y_r
:
y_r = A*x = <3a+4b; 5a+6b>T
次に、「絶対」部分を追加します。
y = y_r + t = <3a+4b+2; 5a+6b+2>T
次に、どのようにB
機能するかを見てください。y'
行ごとに計算します:
1) a' = 3*a + 4*b + 2*1
2) b' = 5*a + 6*b + 2*1
3) the rest: 0*a + 0*b + 1*1 = 1
まさに私たちが期待したものです。まず、回転部分が計算されます (加算と乗算)。次に、並進部分の x 部分が追加され、乗算され1
ます -- それは同じままです。2行目も同じです。
3 行目では、a
とb
が削除されます ( で乗算され0
ます)。最後の部分は同じままで、たまたま1
. したがって、その最後の行については、ポイントの値を「ドロップ」し、1
.
したがって、2x3 行列で十分であると言えます。それは部分的には正しいのですが、重大な欠点が 1 つあります。それは、構成可能性が失われることです。基本的に で満足しているがB
、1 つの座標をミラーリングしたいとします。次に、別の変換行列を選択できます
/-1 0 0\
C = | 0 1 0|
\ 0 0 1/
そして結果が出ます
y'' = C*B*x' = <-3a+4b+2; 5a+6b+2; 1>T
この単純な乗算は、単純に行列乗算の特性のために、2x3 行列では簡単に実行できませんでした。
原則として、上記の最後の行 (the XXX
) は、その他の形式のものでもかまいません<0;0;x>
。ポイント値を下げるだけでした。ただし、乗算による合成を機能させるには、まさにこのようにする必要があります。
最後に、この場合、ウィキペディアは私にとって非常に有益なようです。