座標、ベクトルからatanを使って角度を求めてみる

ある座標(x,y)がx軸となす角度を知りたいなんてことはあると思いますが、
たとえばアナログスティックの座標を角度として扱い回転を得るなんて場合です。

atanにはy/xを渡します。
タンジェント-90°から90°の値と、90°から270°の値は同じですから、
atanして得られる値は-90°から90°の範囲にしぼられます。
渡したy、xの正負で得られた値を適切な値にしなければなりません。

PIは3.1415どーたらこーたら


vec2 v = pad::getstick(); //アナログスティックの2次元ベクトルを取得
float rot = 0;  //得られる値はラジアンです
if( v.x == 0 ){
rot = (v.y>=0?1:-1)*PI/2.f;
}else if( v.x < 0 ){
rot = atan(v.y/v.x);
rot = D3DX_PI + rot;
}else{
rot = atan(v.y/v.x);
}
xが0である場合、y/xは無限大になってしまいますがatanはPI/2.fか-PI/2.f返してくれます。
この例ではyの正負で決定しています。PI/2.fは90°をラジアンで表した値です。


xが負の数である場合、PIつまり180°を加算することで、x軸となす角の角度を求めることができます。