2013-10-10 3 views
1

У меня есть самолет в начале координат.вращение с использованием плоскости нормальный

glBegin(GL_POLYGON); 
glVertex3f(-10.0, -10.0,0.0); 
glVertex3f(10.0, -10.0, 0.0); 
glVertex3f(10.0, 10.0, 0.0); 
glVertex3f(-10.0, 10.0, 0.0); 
glEnd(); 

Чем я пытаюсь повернуть этот самолет для нового нормального 1 0 0

Я понимаю, что вычислить угол между двумя нормалями, мне нужно найти старый нормальный. Как я могу найти старый нормальный? и когда я нахожу старый нормальный, мне нужно ввести новый нормальный для вращения, например glRotatef(angle,1,0,0)?

+1

Вам не нужно «находить старый нормальный», потому что 1 нет «старых нормальных» и 2 вам нужно рассчитать нормаль в соответствии с вершинами. – Vallentin

+0

Вы имеете в виду, что используете 3 балла и находите векторы, такие как PQ и PR, и чем перекрещиваете эти два вектора? Когда я делаю это, я получаю 0, потому что у меня нет глубины на моем самолете. – james456

+0

Не видел, чтобы вы не использовали z/depth, если вы не используете глубину, тогда нормальная всегда будет '(X, Y, Z) = (0, 0, 1) ' – Vallentin

ответ

0

Все ваши вершины лежат в плоскости XY, и поэтому ваш нормаль просто находится в направлении Z (0,0,1) или (0,0, -1). Если вы хотите повернуть ваш многоугольник, чтобы указать его нормальный в направлении X, вам нужно будет вращать его на 90 градусов относительно оси Y, glRotatef (90.0f, 0,1,0) или glRotatef (-90.0f, 0,1, 0).

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