86 lines
2.6 KiB
Python
Executable File
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_()
|
|
|
|
|