三角関数

三角関数と聞くと、角度からX軸Y軸の比率を求める関数との認識でしょう。
別名円関数と呼ばれているように、下記のように組み合わせると、円を描けます。
また、綺麗な弾幕を張るには、必須とも言えます。


基本形はコレ。

dx = cos(θt);
dy = sin(θt);
x += dx;
y += dy;

θtを時間経過毎に増やしてやれば、円の軌道を描きます。
三角関数の基本中の基本ですが、駆使すると、結構複雑な動きを描く事が出来ます。


例えば

dx = cos(2*θt);
dy = sin(θt);
x += dx;
y += dy;

こうすると、∞を描くように移動します。
2を増やすと、上下に波打ちながら左右に揺れる動きをします。


他にも

dx = cos(θt);
dy = sin(θt)+2.0f;
x += dx;
y += dy;

この様にy成分に常に定値を置いたりすると、螺旋を描きつつ下に移動する動きになり、あたかも蜂などの素早い空飛ぶ昆虫が飛んで移動している感じになります。
(この場合は、θtの増加量を上げてから、周期を短くすると更にGOOD)


ちなみに、楕円を描く事も出来ます。~
方法は、縦横比を2:1としますと

dx = cos(θt);
dy = sin(θt) * 2;
x += dx;
y += dy;

な感じで、縦方向であるdyの値を2倍にしますと、円が縦方向にみにょーんと伸びた楕円になります。


ここからが楽しい所。
この楕円。
傾けたり出来ないかと考えますよね?ね?
そんな時は

dx = cos(θt);
dy = sin(θt) * 2;
dx = cos(θ) * dx + sin(θ) * dy;
dy =-sin(θ) * dx + cos(θ) * dy;
x += dx;
y += dy;

このθの値を変更すると、傾いていきます。
(ミスッテタ)


そして、よくお世話になるのが、アークタンジェント関数。
2点間のXY軸の距離から角度を求めるわけですが、基本形は

θ=atan(dy/dx)

こうなります。
弾が自機を狙う場合、弾が自機の方向を向くようにする時の回転情報として使いますね。


但し、注意点が一つ。
dxの値が0の場合、割る数が0になるため、0除算エラーが発生します。
なので、それを回避する必要があります。