Как нарисовать прямоугольник перпендикулярно вектору в OpenGL - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь нарисовать прямоугольник перпендикулярно вектору v:

glPushMatrix()
glTranslatef(v[0], v[1], v[2])
glBegin(GL_QUADS)
glVertex3f( -h, -h, 0)
glVertex3f( h, -h, 0)
glVertex3f( h, h, 0)
glVertex3f( -h, h, 0)
glEnd()

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

1 Ответ

0 голосов
/ 05 февраля 2019

Если вектор v находится в пространстве вида, то ось x указывает влево, ось y направлена ​​вверх, а ось z - вне области просмотра.

Рассчитать долготу и широту -см. Географическая система координат :

import math
lenXY = math.sqrt(v[0]*v[0] + v[2]*v[2])
lon   = math.atan2(v[0], v[2])
lat   = math.atan2(v[1], -lenXY)

Поворот вокруг осей x и y:

glPushMatrix()
glTranslatef(v[0], v[1], v[2])
glRotatef(math.degrees(lon), 0, 1, 0)
glRotatef(math.degrees(lat), 1, 0, 0)

# [...]

glPopMatrix()

...