个人技术分享

pyopengl 正投影和透视投影变换.

正投影:平行线还是平行线

正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体,如图所示。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等平面图形方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。

透视投影:近大远小。

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from OpenGL.GL import *
from OpenGL.GLU import *
import sys

class OpenGLWidget(QtWidgets.QOpenGLWidget):
    def __init__(self, parent=None):
        super(OpenGLWidget, self).__init__(parent)
        self.is_perspective = False  # 默认使用正投影

    def initializeGL(self):
        glEnable(GL_DEPTH_TEST)

    def paintGL(self):
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
        if self.is_perspective:
            gluLookAt(3, 3, 3, 0, 0, 0, 0, 1, 0)
        else:
            glTranslatef(0.0, 0.0, -5.0)

        glBegin(GL_Q