Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2个月前关闭。
我想在PyOpenGL中切换Y和Z轴方向。我曾尝试使用矩阵变换,但未能做到这一点。
码:
哪里:
错误的结果:
使用身份矩阵:
预期:
编辑:这有效:
要么
注意,可以通过绕x轴旋转来实现相同的目的。例如:
如果您有一个视图矩阵和一个模型矩阵,则必须通过
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2个月前关闭。
我想在PyOpenGL中切换Y和Z轴方向。我曾尝试使用矩阵变换,但未能做到这一点。
码:
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(self.zoom, -self.zoom, -self.zoom, self.zoom, -5000, 5000)
glMatrixMode(GL_MODELVIEW)
glClearColor(1, 1, 1, 0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadMatrixf(self.m)
哪里:
self.zoom = 150
self.m = [[1, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 0],
[0, 0, 0, 1]]
错误的结果:
使用身份矩阵:
预期:
编辑:这有效:
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(self.zoom, -self.zoom, -self.zoom, self.zoom, -5000, 5000)
up = 1
if self.theta == 360:
up = -1
gluLookAt(self.x, self.y, self.z, 0, 0, 0, 0, up, 0)
glMatrixMode(GL_MODELVIEW)
glClearColor(1, 1, 1, 0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadMatrixf(self.m)
最佳答案
通过交换组件并将组件之一反转,可以将二维矢量旋转90°:
向左旋转(x,y)为(-y,x)
向右旋转(x,y)是(y,-x)
您实际要做的是将右手矩阵转换为左手矩阵。它是旋转90°和镜像的串联。
更改矩阵:
要么
self.m = [[1, 0, 0, 0],
[0, 0, -1, 0],
[0, 1, 0, 0],
[0, 0, 0, 1]]
要么
self.m = [[1, 0, 0, 0],
[0, 0, 1, 0],
[0, -1, 0, 0],
[0, 0, 0, 1]]
注意,可以通过绕x轴旋转来实现相同的目的。例如:
glLoadIdentity()
glRotatef(90, 1, 0, 0)
如果您有一个视图矩阵和一个模型矩阵,则必须通过
glMultMatrix
将模型矩阵乘以该视图矩阵:glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(self.x, self.y, self.z, 0, 0, 0, 0, up, 0)
glMultMatrixf(self.m)
关于python - 在PyOpenGL中切换轴Y和Z ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59354346/
10-11 00:35