2009-12-04 3 views
3

В моем дидактическом приложении openGL у меня есть некоторые объекты на сцене, и когда я нажимаю на один из них, я хочу, чтобы моя камера смотрела на этот объект. Для этого после того, как я определяю объект с щелчком, я вычисляю вверх, передний и правый векторы камеры, а затем мне нужно рассчитать угол наклона, рыскания, углы поворота камеры. Однако я совершенно не знаю, как я могу это сделать, поэтому любая помощь будет отличной.определить шаг, рыскание, рулон с фронтальной правой

ответ

1

Вам не нужны все эти вычисления. просто используйте glLookAt(). он занимает положение камеры, положение того, где вы хотите смотреть, и вектор вверх и соответственно ориентирует матрицу представления модели.

Если вы действительно хотите сделать это трудным путем, посмотрите на мой ответ to this question.

+0

Я бы сделал это так, если бы это зависело от меня ..... но я должен узнать больше, делая это. –

1

Это вопрос расчета в обратном направлении. Из вектора front вы сможете вывести yaw и pitch relativly easy.

Если ваша система координат имеет й и г как пол

yaw = atan2(front.z, front.x); 

Шаг может быть вычислен путем нормализации front и использования ASIN

front.normalize(); 
pitch = asin(front.y); 

Если у меня есть время спустя я изучу расчет roll

В противном случае есть хорошее предложение использовать gluLookAt

Смежные вопросы