私は Java で Tetris を構築しており、線形代数を使用して 4 つのタイルで構成されるピースを回転させようとしています。
私の友人は、その方法を次のように説明していました。
彼は言った:
「明確にするために、各ポイントを回転させる必要があります。つまり、ピース内の各タイルに対して 1 つのポイントを回転させる必要があります。ただし、ピース内の各タイルの 4 つの角ではありません。原点は、一枚の紙と鉛筆をぐるぐる回す..鉛筆がある場所が原点です。」
「つまり、(7,9) (8,9) (9,9), (8,10) にタイルがあるボードに T があり、その原点が (8,9).. である場合。」
だから私は座標 (1, 3) (1, 2) (1, 1) (2, 2)… 原点 (1, 2) でそれをやっています
それから彼は言った:
「タイルを原点に相対的に変換します。つまり、この回転の新しい (0, 0) として原点を扱います。これは、各座標から原点を差し引くだけで簡単で、(7-8, 9-9)、(8-8、9-9)、(9-8、9-9)、(8-8、10-9) または (-1、0) (0、0) (1、0) ) (0, 1)"
各座標から原点 (1, 2) を引きます
(1-1, 3-2) (1-1, 2-2) (1-1, 1-2) (2-1, 2-2) =
(0, 1) (0, 0) (0, -1) (1, 0)
それから彼は言った:
「これまで話してきたように、回転行列の乗算を使用してこれら 4 つの座標を回転させます。」
最後に彼は言った:
「次に、結果の各座標に原点座標を追加すると、4 つの回転したタイル座標が得られます。」
上記の行列から、私は (0, -1) (0, 0) (0, 1) (-1, 0) を持っています. (1+0, 2+0) (1+0, 1+1) (2-1, 2+0) =
回転座標: (0, 3) (1, 2) (1, 2) (1, 2)
しかし、回転した形状を見ると...完全に間違っています:
なぜ何か考えはありますか?
ありがとう!