ベクトルを回転させるには以下のような変換を行います。(2次元)
https://ja.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E8%A1%8C%E5%88%97
ある座標系で、あるベクトル$\vec{v}(v_x, v_y)$を原点を中心に、$\theta$ラジアン回転させる。
回転の式は、以下の様になる。(行列を使わないバージョン)
$
\begin{eqnarray}
\left\{
\begin{array}{l}
x\prime = cos\theta \cdot x - sin\theta \cdot y \\
y\prime = sin\theta \cdot x + cos\theta \cdot y \\
\end{array}
\right.
\end{eqnarray}
$
これをベースに、Siv3Dをつかって基準になるベクトルv(0,-1)を回転させるプログラムを作ろう。
ます、基準になるベクトルを回転させる関数をつくります。
(sin, cosの角度の単位はradianであることに注意!)
Vec2 RotateVec(Vec2 _v, double angle);//こっちはアングル(digree)
これを使って回転させたベクトルを表示してみよう。
表示部分がこんな感じになれば素敵だと思います。
while (System::Update()) { Vec2 vd = rotateVec(v, angle); DrawVec(vd); //右クリックしている間1度ずつ+方向に回す if (MouseR.pressed()) { angle += 1; } //左クリックしている間1度ずつー方向に回す if (MouseL.pressed()) { angle -= 1; } }