Files
sandbox/pyqt/test002.py
2021-04-25 17:19:49 -05:00

86 lines
2.6 KiB
Python
Executable File

import numpy as np
from OpenGL import GL, GLU
from PyQt5.QtWidgets import QOpenGLWidget, QApplication
global eyeX, eyeY, eyeZ
# gluLookAt 'eye' coordinates
eyeX = 0.0
eyeY = 0.0
eyeZ = 10.0
class OpenGLWidget(QOpenGLWidget):
def initializeGL(self):
GL.glClearColor(0,0,0,1);
# GL.glEnable(GL.GL_DEPTH_TEST);
# GL.glEnable(GL.GL_LIGHT0);
# GL.glEnable(GL.GL_LIGHTING);
# GL.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
# GL.glEnable(GL.GL_COLOR_MATERIAL);
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glOrtho(-10.0, 10.0, -10.0, 10.0, -10.0, 10.0)
GL.glClear(GL.GL_COLOR_BUFFER_BIT)
GL.glMatrixMode(GL.GL_MODELVIEW);
GL.glLoadIdentity();
#GL.glClearColor(1.0, 0.0, 1.0, 0.0);
# vertices = np.array([0.0, 1.0, -1.0, -1.0, 1.0, -1.0], dtype=np.float32)
#
# bufferId = GL.glGenBuffers(1)
# GL.glBindBuffer(GL.GL_ARRAY_BUFFER, bufferId)
# GL.glBufferData(GL.GL_ARRAY_BUFFER, vertices.nbytes, vertices, GL.GL_STATIC_DRAW)
#
# GL.glEnableVertexAttribArray(0)
# GL.glVertexAttribPointer(0, 2, GL.GL_FLOAT, GL.GL_FALSE, 0, None)
def paintGL(self):
# GL.glDrawArrays(GL.GL_TRIANGLES, 0, 3)
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
GLU.gluLookAt(eyeX, eyeY, eyeZ,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0);
# GL.glBegin(GL.GL_TRIANGLES);
# GL.glColor3f(1.0, 0.0, 0.0);
# GL.glVertex3f(-0.5, -0.5, 0);
# GL.glColor3f(0.0, 1.0, 0.0);
# GL.glVertex3f( 0.5, -0.5, 0);
# GL.glColor3f(0.0, 0.0, 1.0);
# GL.glVertex3f( 0.0, 0.5, 0);
# GL.glEnd();
from math import sin, cos
radius = 0.5
halfLength = 3.0
slices = 10
for i in range(slices):
theta = float(i) * 2.0 * 3.14 / float(slices)
nextTheta = float(i + 1) * 2.0 * 3.14 / float(slices)
GL.glColor3f(1.0, 0.0, 0.0)
GL.glBegin(GL.GL_TRIANGLE_STRIP)
GL.glVertex3f(0.0, halfLength, 0.0)
GL.glVertex3f(radius*cos(theta), halfLength, radius*sin(theta))
GL.glVertex3f (radius*cos(nextTheta), halfLength, radius*sin(nextTheta))
GL.glVertex3f (radius*cos(nextTheta), -halfLength, radius*sin(nextTheta))
GL.glVertex3f(radius*cos(theta), -halfLength, radius*sin(theta))
GL.glVertex3f(0.0, -halfLength, 0.0)
GL.glEnd()
app = QApplication([])
widget = OpenGLWidget()
widget.show()
app.exec_()