如何在 OpenGL 中绘制垂直于矢量的矩形
How to draw a rectangle perpendicular to a vector in OpenGL
我正在尝试绘制一个垂直于矢量的矩形 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()
生成的矩形位于向量的末尾(我需要这个),如何使其垂直于该向量?
如果向量v
在视图space内,则x轴指向左侧,y轴指向上方,z轴指向视口外。
计算经度和纬度 - 参见Geographic coordinate system:
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()
我正在尝试绘制一个垂直于矢量的矩形 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()
生成的矩形位于向量的末尾(我需要这个),如何使其垂直于该向量?
如果向量v
在视图space内,则x轴指向左侧,y轴指向上方,z轴指向视口外。
计算经度和纬度 - 参见Geographic coordinate system:
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()