python - 如何在OpenGL中绘制垂直于向量的矩形

标签 python opengl glut

我正在尝试绘制一个垂直于矢量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 位于 View 空间内,则 x 轴指向左侧,y 轴指向上方,z 轴指向视口(viewport)外。

计算经度和纬度 - 请参阅 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()

关于python - 如何在OpenGL中绘制垂直于向量的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524389/

相关文章:

java - 将正则表达式字符串从 Java 转换为 Python

python - eval vs json.loads 内存消耗

c++ - OpenGL Fog不出现

c++ - 无窗口 OpenGL

OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

c - Monodevelop 和过剩问题

python - 如何解决 WSL 中的 "CondaHTTPError: HTTP 000 CONNECTION FAILED"错误?

python - 如何将文件中具有相同值的所有行保存到文件中

c++ - 布局中有多个 QGLWidget

c++ - GL 或 GLUT 有问题