回転の成分を正規化する
以前書いた角度を正規化するRadianNormalize関数は問題があったので、今更書き直しました。関数の引数に回転値を与えると、0〜2*PIまでの値を返します。英語のコメントに関しては現在間違っているので修正します。(追記:正しい英文に直しました)
#define PI (3.14159f) #define PI_TWO (PI*2.0f) // ラジアンを正規化する float RadianNormalize(float rad) { // the value check in the range of -pi*2 to +pi*2 if (rad < 0.0f || rad >= PI_TWO) { // start normalize int div = static_cast<int>(rad / PI_TWO); rad -= (div*PI_TWO); // -pi*2 to pi*2. // if the value range is negative, change to positive if (rad < 0.0f) rad = PI_TWO+(rad); // add pi*2 to value } return rad; }