私はいくつかの 2D 描画を行いたいので、いくつかの行列変換を実装したいと考えています。私の軽い数学のバックグラウンドで、C#でこれを行う方法を理解しようとしています(他のoop言語は明らかにそれを行います)。
私が読んだのは、翻訳に対処できるようにするには 3x3 マトリックスを使用する必要があるという説明だけです。掛け算では翻訳できないからです。しかし、これは変換を作成する行列の乗算によるものです。したがって、次のようなものを使用します。
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
3 列目の平均はわかりましたが、なぜ 3 行目が必要なのですか? 回転、スケール、または回転と同様に恒等行列では、最後の行は同じです。まだ到達していない操作はありますか? 一部の言語 (Java) は「二乗次元」配列でパフォーマンスが向上するためですか? その場合、C# で 3 列と 2 行を使用できます (ギザギザの配列も同様またはそれ以上に機能するため)。
たとえば、回転 + 平行移動の場合、次のような行列があります
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
最後の行は必要ありません。