2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

2Dにおける三角関数を使わないベクトルの90度回転

Last updated at Posted at 2020-05-20

計算なしで回転できる?!

符号反転と数値の入れ替えだけで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になる

一応図ものせておきます
90度回転.PNG

180度回転の方法

xとyの値の符号を反転させる。

270度回転の方法

xの値の符号を反転させて、そのうえでxとyの値を入れ替える。

まとめ

三角関数を使用しなくても90度ずつの回転ができます。
テトリスやぷよぷよなどのパズルゲーム等にも使えるものですので、参考になればうれしいです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?