diff options
Diffstat (limited to 'python/pyqt/examples2/gears.py')
-rwxr-xr-x | python/pyqt/examples2/gears.py | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/python/pyqt/examples2/gears.py b/python/pyqt/examples2/gears.py deleted file mode 100755 index bf5b913f..00000000 --- a/python/pyqt/examples2/gears.py +++ /dev/null @@ -1,235 +0,0 @@ -#!/usr/bin/env python - - -import sys -import math -from qt import * -from qtgl import * -from OpenGL.GL import * - -def gear(inner_radius,outer_radius,width,teeth,tooth_depth): - r0 = inner_radius; - r1 = outer_radius - tooth_depth/2.0; - r2 = outer_radius + tooth_depth/2.0; - - da = 2.0*math.pi/teeth/4.0; - - glShadeModel(GL_FLAT) - - glNormal3f(0.0,0.0,1.0) - - # draw front face - - glBegin(GL_QUAD_STRIP) - - for i in range(teeth+1): - angle = i * 2.0*math.pi/teeth; - glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 ) - glVertex3f(r1*math.cos(angle), r1*math.sin(angle), width*0.5 ) - glVertex3f(r0*math.cos(angle), r0*math.sin(angle), width*0.5 ) - glVertex3f(r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 ) - - glEnd() - - # draw front sides of teeth - - da = 2.0*math.pi/teeth/4.0; - - glBegin(GL_QUADS) - - for i in range(teeth): - angle = i*2.0*math.pi/teeth - - glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 ) - glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 ) - glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 ) - glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 ) - - glEnd() - - - glNormal3f( 0.0, 0.0, -1.0 ) - - # draw back face - - glBegin( GL_QUAD_STRIP ); - - for i in range(teeth+1): - angle = i*2.0*math.pi/teeth; - - glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 ) - glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 ) - glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 ) - glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 ) - - glEnd() - - # draw back sides of teeth - - da = 2.0*math.pi/teeth/4.0 - - glBegin( GL_QUADS ) - - for i in range(teeth): - angle = i*2.0*math.pi/teeth - - glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 ) - glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 ) - glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 ) - glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 ) - - glEnd() - - # draw outward faces of teeth - - glBegin( GL_QUAD_STRIP ) - - for i in range(teeth): - angle = i*2.0*math.pi/teeth - - glVertex3f( r1*math.cos(angle), r1*math.sin(angle), width*0.5 ) - glVertex3f( r1*math.cos(angle), r1*math.sin(angle), -width*0.5 ) - - u = r2*math.cos(angle+da) - r1*math.cos(angle) - v = r2*math.sin(angle+da) - r1*math.sin(angle) - - len = math.sqrt( u*u + v*v ) - u /= len - v /= len - glNormal3f( v, -u, 0.0 ) - glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), width*0.5 ) - glVertex3f( r2*math.cos(angle+da), r2*math.sin(angle+da), -width*0.5 ) - glNormal3f( math.cos(angle), math.sin(angle), 0.0 ) - glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), width*0.5 ) - glVertex3f( r2*math.cos(angle+2*da), r2*math.sin(angle+2*da), -width*0.5 ) - u = r1*math.cos(angle+3*da) - r2*math.cos(angle+2*da) - v = r1*math.sin(angle+3*da) - r2*math.sin(angle+2*da) - glNormal3f( v, -u, 0.0 ) - glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), width*0.5 ) - glVertex3f( r1*math.cos(angle+3*da), r1*math.sin(angle+3*da), -width*0.5 ) - glNormal3f( math.cos(angle), math.sin(angle), 0.0 ) - - glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), width*0.5 ) - glVertex3f( r1*math.cos(0.0), r1*math.sin(0.0), -width*0.5 ) - - glEnd() - - glShadeModel (GL_SMOOTH) - - # draw inside radius cylinder - - glBegin( GL_QUAD_STRIP ) - - for i in range(teeth+1): - angle = i * 2.0*math.pi / teeth; - glNormal3f( -math.cos(angle), -math.sin(angle), 0.0 ); - glVertex3f( r0*math.cos(angle), r0*math.sin(angle), -width*0.5 ); - glVertex3f( r0*math.cos(angle), r0*math.sin(angle), width*0.5 ); - - glEnd() - -############################################################################## -class GearWidget(QGLWidget): - def __init__(self,parent=None,name=None): - QGLWidget.__init__(self,parent,name) - - self.angle=0.0 - self.view_rotx=0.0 - self.view_roty=0.0 - self.view_rotz=0.0 - - self.startTimer(10) - - def timerEvent(self,event): - self.updateGL() - - def paintGL(self): - self.angle = self.angle + 2.0 - self.view_rotx = self.view_rotx + 1.0 - self.view_roty = self.view_roty + 3.0 - self.view_rotz = self.view_rotz + 2.0 - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) - - glPushMatrix() - glRotatef( self.view_rotx, 1.0, 0.0, 0.0 ) - glRotatef( self.view_roty, 0.0, 1.0, 0.0 ) - glRotatef( self.view_rotz, 0.0, 0.0, 1.0 ) - - glPushMatrix() - glTranslatef( -3.0, -2.0, 0.0 ) - glRotatef( self.angle, 0.0, 0.0, 1.0 ) - glCallList(self.gear1) - glPopMatrix() - - glPushMatrix() - glTranslatef( 3.1, -2.0, 0.0 ) - glRotatef( -2.0*self.angle-9.0, 0.0, 0.0, 1.0 ) - glCallList(self.gear2) - glPopMatrix() - - glPushMatrix() - glTranslatef( -3.1, 2.2, -1.8 ) - glRotatef( 90.0, 1.0, 0.0, 0.0 ) - glRotatef( 2.0*self.angle-2.0, 0.0, 0.0, 1.0 ) - glCallList(self.gear3) - glPopMatrix() - - glPopMatrix() - - def resizeGL(self,width,height): - w = width / float(height) - h = 1.0 - - glViewport( 0, 0, width, height ) - glMatrixMode(GL_PROJECTION) - glLoadIdentity() - glFrustum( -w, w, -h, h, 5.0, 60.0 ) - glMatrixMode(GL_MODELVIEW) - glLoadIdentity() - glTranslatef( 0.0, 0.0, -40.0 ) - - def initializeGL(self): - pos=(5.0, 5.0, 10.0, 1.0 ) - ared=(0.8, 0.1, 0.0, 1.0 ) - agreen=(0.0, 0.8, 0.2, 1.0 ) - ablue=(0.2, 0.2, 1.0, 1.0 ) - - glLightfv(GL_LIGHT0,GL_POSITION,pos) - glEnable(GL_CULL_FACE) - glEnable(GL_LIGHTING) - glEnable(GL_LIGHT0) - glEnable(GL_DEPTH_TEST) - - self.gear1=glGenLists(1) - glNewList(self.gear1,GL_COMPILE) - glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ared) - gear(1.0,4.0,1.0,20,0.7) - glEndList() - - self.gear2=glGenLists(1) - glNewList(self.gear2,GL_COMPILE) - glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,agreen) - gear(0.5,2.0,2.0,10,0.7) - glEndList() - - self.gear3=glGenLists(1) - glNewList(self.gear3,GL_COMPILE) - glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,ablue) - gear(1.3,2.0,0.5,10,0.7) - glEndList() - - glEnable(GL_NORMALIZE) - -############################################################################## -if __name__=='__main__': - QApplication.setColorSpec(QApplication.CustomColor) - app=QApplication(sys.argv) - - if not QGLFormat.hasOpenGL(): - raise 'No Qt OpenGL support.' - - widget=GearWidget() - app.setMainWidget(widget) - widget.show() - app.exec_loop() |