計算なしで回転できる?!
符号反転と数値の入れ替えだけで90度、180度、270度回転ができる。
前提条件
x軸とy軸に対する値を持つベクトルがあること
// 今回使うクラス
class Vector2
{
public float x = 0.0f;
public float y = 0.0f;
public Vector2(float _x, float _y)
{
x = _x;
y = _y;
}
}
90度回転の方法
yの値の符号を反転させて、そのうえでxとyの値を入れ替える。
vector = new Vector2(1, 0);
// 実践
vector = new Vector2(-vector.y, vector.x);
// vector.x = 0とvector.y = 1になる
↑で変換した値を確認すると90度回転した値になる。
信じられない人へ
Vector2(1, 0)だったからできたと思ったかもしれません。
では別でも試してみます。
vector = new Vector2(3, 4);
// 実践
vector = new Vector2(-vector.y, vector.x);
// vector.x = -4とvector.y = 3になる
180度回転の方法
xとyの値の符号を反転させる。
270度回転の方法
xの値の符号を反転させて、そのうえでxとyの値を入れ替える。
まとめ
三角関数を使用しなくても90度ずつの回転ができます。
テトリスやぷよぷよなどのパズルゲーム等にも使えるものですので、参考になればうれしいです。