Проблема с вращением куба в opengl android - PullRequest
0 голосов
/ 27 июня 2011

Я хочу определять лицо (какое лицо находится перед пользователем) всякий раз, когда я вращаю куб.

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Рассчитайте скалярное произведение (точечное произведение) каждой грани нормали с вектором + Z.Лицо, для которого скалярное произведение максимально, обращено к зрителю.

0 голосов
/ 27 июня 2011

ответ datenwolf имеет правильную идею, но, как написано, это не совсем правильно. Обозначим через P верхнюю треугольную подматрицу 3x3 матрицы проекции модель-вид, которую вы используете для рисования куба. Тогда третий ряд P (назовите его v для аргумента сакэ) представляет ненормализованное направление вашего взгляда. Теперь, чтобы проверить, указывает ли лицо на камеру, предполагая, что нормали к единице измерения направлены наружу, вы просто должны проверить, является ли скалярное произведение его нормали с v <0 (не максимизировано). Это следует из того, что: </p>

 dot(a, b) = |a| |b| cos(theta)

Где тета - это угол между ними. Это может быть отрицательным, только если они указывают в противоположных направлениях, что является необходимым и достаточным условием для того, чтобы лицо указывало на камеру, предполагая, что оно физически расположено перед камерой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...