こんにちは、おじさんです。
とりあえず数学の知識はいらないので
私みたいな猿でもわかると思います
私の語彙力があれば。
まず、ブロックを4x4のデータとして考えます。
文字きたな...っていうのは置いといて、
とりあえず横一列をよく見てみましょう。
こちらです。
こちらを右に90度回転させると
こうなります。
元座標と回転したところの座標を比べてみると...
元のy座標が増えると、回転後のx座標が減っています!
だから回転させるには回転後のx座標を4(ブロックのサイズ) - 元のy座標、
回転後のy座標を元のx座標にすればいいわけです。
これをプログラムで表すと...
var rotated_block = [];
まず、回転後のブロックを作成します。
~~~~~~~~~ for(var i = 0; i < 4; i++) { for(var n = 0; n < 4; n++) { } }
そしたら、配列を読み込むためにfor文を書きます。
~~~~~~~~~ for(var i = 0; i < 4; i++) { rotated_block[i] = []; for(var n = 0; n < 4; n++) { rotated_block[i][n] = block[n][4 - i - 1]; } }
最後に配列にデータを設定したら完成です。
また、なんで一を引いているかというのは説明がめんどくさいので簡単に説明すると
配列の座標は数字-1だからです(語彙力)
ここまでありがとうございました。