home *** CD-ROM | disk | FTP | other *** search
- #! /usr/bin/env python
-
- # Use Gouraud shading to mix colors. Requires Z-buffer.
- # It changes the color assignments so fast that you see white.
- # Left button pauses, middle rotates the square. ESC to quit.
- # Experiment with a larger window (too slow) or smaller window (really white).
-
- from GL import *
- from gl import *
- import DEVICE
- from math import *
-
- #
- # tekenvlak : draw a square. with bgnpolygon
- #
- def tekenvlak (vc) :
- bgnpolygon()
- #vcarray (vc)
- for i in vc :
- c3f (i[1])
- v3f (i[0])
- endpolygon()
-
- #
- # tekendoos : draw a box
- #
- def tekendoos (col) :
- v = [(-5.0,0.0,0.0),(0.0,5.0,0.0),(5.0,0.0,0.0),(0.0,-5.0,0.0)]
- vc = [(v[0],col[0]),(v[1],col[1]),(v[2],col[2]),(v[3],col[1])]
- tekenvlak (vc)
-
- #
- # initialize gl
- #
- def initgl () :
- #
- # open window
- #
- foreground ()
- keepaspect (1, 1)
- prefposition (100, 500, 100, 500)
- w = winopen ('PYTHON RGB')
- keepaspect (1, 1)
- winconstraints()
- #
- # configure pipeline (2buf, GOURAUD and RGBmode)
- #
- doublebuffer ()
- zbuffer (1)
- shademodel (GOURAUD)
- RGBmode ()
- gconfig ()
- #
- # set viewing
- #
- perspective (900, 1, 1.0, 10.0)
- polarview (10.0, 0, 0, 0)
- #
- # ask for the REDRAW and ESCKEY events
- #
- qdevice(DEVICE.MOUSE2)
- qdevice(DEVICE.MOUSE3)
- qdevice(DEVICE.REDRAW)
- qdevice(DEVICE.ESCKEY)
-
-
- #
- # the color black
- #
- black = 0
- #
- # GoForIT : use 2buf to redraw the object 2n times. index i is used as
- # the (smoothly changing) rotation angle
- #
- def GoForIt(i) :
- col = [(255.0,0.0,0.0), (0.0,255.0,0.0), (0.0,0.0,255.0)]
- twist = 0
- freeze = 1
- while 1 :
- if freeze <> 0 :
- col[0],col[1],col[2] = col[1],col[2],col[0]
- #
- # clear z-buffer and clear background to light-blue
- #
- zclear()
- cpack (black)
- clear()
- #
- tekendoos (col)
- #
- swapbuffers()
- #
- if qtest() <> 0 :
- dev, val = qread()
- if dev == DEVICE.ESCKEY :
- break
- elif dev == DEVICE.REDRAW :
- reshapeviewport ()
- elif dev == DEVICE.MOUSE2 and val <> 0 :
- twist = twist + 30
- perspective (900, 1, 1.0, 10.0)
- polarview (10.0, 0, 0, twist)
- elif dev == DEVICE.MOUSE3 and val <> 0 :
- freeze = 1 - freeze
-
-
- # the main program
- #
- def main () :
- initgl ()
- GoForIt (0)
-
- #
- # exec main
- #
- main ()
-