2010-12-08 7 views
0

Программа OpenGL я пишу использует порт glULookat для управления камеройIphone OpenGL: gluLookAt X, Z для вращения (360): Heading угол

Для вращения у меня есть следующий код

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: центр [0] = глаз [0] + cos (SPEED_TURN) * v [0] - sin (SPEED_TURN) * v [2]; центр [2] = глаз [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); 

ответ

0

Приращение поплавка поворотом + = 2.865; казалось, на самом деле работает lol

1

Чтобы получить угол в градусах просто умножить значение угла в радианах на 180/PI, где PI = 3.1415926535897. В этом случае угол поворота в радианах представляет собой весь фрагмент кода после глаз [].

rotAngleDegs = (соз (-SPEED_TURN) * v [0] - грех (-SPEED_TURN) * v [2]) * 180/PI

+0

Это производит очень странные углы, я что-то пропустил? – Burf2000 2010-12-08 19:54:35

1

Похоже, что вы используете матрицу вращения. Wikipedia Rotation Matrix entry

-SPEED_TURN - это угол поворота в радианах, который можно преобразовать в градусы, умножив коэффициент 180/PI.

+0

Speed_turn является фиксированным значением, например: #define SPEED_TURN 0.05 – Burf2000 2010-12-08 14:02:29