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;

案例 ActionTurnRight: center[0] = eye[0] + cos(SPEED_TURN)*v[0] - sin(SPEED_TURN)*v[2]; 中心[2] = 眼睛[2] + sin(SPEED_TURN)*v[0] + cos(SPEED_TURN)*v[2];

我的问题是如何获得以度为单位的旋转角度?

更新:试过这个,它给了我 -572 ish 到 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

要获得以度为单位的角度,只需将弧度角度乘以 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 回答
1

看起来您正在使用旋转矩阵。维基百科旋转矩阵条目

-SPEED_TURN 是以弧度为单位的旋转角度,可以通过乘以系数 180 / PI 转换为度数。

于 2010-12-08T13:52:31.060 回答
0

通过旋转增加浮点数 +=2.865; 似乎真的有效,哈哈

于 2010-12-09T23:48:59.413 回答