0

私が書いている OpenGL プログラムは glULookat のポートを使用してカメラを制御します

回転するには、次のコードがあります

case ActionTurnLeft: 
center[0] = eye[0] + cos(-SPEED_TURN)*v[0] - sin(-SPEED_TURN)*v[2]; 
center[2] = eye[2] + sin(-SPEED_TURN)*v[0] + cos(-SPEED_TURN)*v[2]; 


break;

case ActionTurnRight: center[0] = eye[0] + cos(SPEED_TURN)*v[0] - sin(SPEED_TURN)*v[2]; center[2] = eye[2] + sin(SPEED_TURN)*v[0] + cos(SPEED_TURN)*v[2];

私の質問は、回転角度を度単位で取得するにはどうすればよいですか?

更新:これを試してみたところ、-572っぽいから572になりました

float rotAngleDegs;
float PI = 3.1415926535897;
rotAngleDegs = (cos(-SPEED_TURN)*v[0] - sin(-SPEED_TURN)*v[2]) * 180 / PI;
NSLog(@"%f", rotAngleDegs);
4

3 に答える 3

1

回転行列を使用しているようです。ウィキペディア回転行列エントリ

-SPEED_TURNはラジアン単位の回転角で、係数180/PIを掛けることで度に変換できます。

于 2010-12-08T13:52:31.060 に答える
1

度単位の角度を取得するには、ラジアン単位の角度に 180 / PI を掛けます。ここで、PI = 3.1415926535897 です。この場合、ラジアン単位の回転角度は eye[] 部分の後のコード全体です。

rotAngleDegs = (cos(-SPEED_TURN)*v[0] - sin(-SPEED_TURN)*v[2]) * 180 / PI

于 2010-12-08T13:25:15.007 に答える
0

回転によるフロートの増加 +=2.865; 実際に動作しているように見えました笑

于 2010-12-09T23:48:59.413 に答える