diff options
Diffstat (limited to 'Demo/sgi/gl/kites.py')
-rwxr-xr-x | Demo/sgi/gl/kites.py | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/Demo/sgi/gl/kites.py b/Demo/sgi/gl/kites.py deleted file mode 100755 index cde69cb..0000000 --- a/Demo/sgi/gl/kites.py +++ /dev/null @@ -1,194 +0,0 @@ -#! /usr/bin/env python - -# *** This only works correctly on a 24 bit-plane machine. *** -# -# A simple Python program that tests the some parts of the -# GL library. It shows the speed that can be obtained when -# doing simple graphics. -# -# The bottleneck in this program is NOT Python but the graphics -# engine; i.e Python can feed the graphics pipeline fast enough -# on the 4D/25G. -# -# This program show 3 kites flying around the screen. It uses -# -# * bgnpolygon, endpolygon -# * v3, n3 -# * lmdef, lmbind -# -# Usage : -# -# ESC -> exit program -# MOUSE3 -> freeze toggle -# MOUSE2 -> one step (use this in freeze state) - -from GL import * -from gl import * -import DEVICE -from math import * - -# -# viewobj : sets the rotation, translation and scaling -# set appropiate material, call drawobject() -# -def viewobj (r, s, t, mat) : - pushmatrix() - rot (r * 10.0, 'X') - rot (r * 10.0, 'Y') - rot (r * 10.0, 'Z') - scale (s[0], s[1], s[2]) - translate (t[0], t[1], t[2]) - lmbind(MATERIAL, mat) - drawobject() - popmatrix() - -# -# makeobj : the constructor of the object -# -def mkobj () : - v0 = (-5.0 ,0.0, 0.0) - v1 = (0.0 ,5.0, 0.0) - v2 = (5.0 ,0.0, 0.0) - v3 = (0.0 ,2.0, 0.0) - n0 = (sqrt(2.0)/2.0, sqrt(2.0)/2.0, 0.0) - vn = ((v0, n0), (v1, n0), (v2, n0), (v3, n0)) - # - return vn - -# -# the object itself as an array of vertices and normals -# -kite = mkobj () - -# -# drawobject : draw a triangle. with bgnpolygon -# -def drawobject () : - # - bgnpolygon() - vnarray (kite) - endpolygon() - -# -# identity matrix -# -idmat=[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0] - -# -# the rgb-value of light-blue -# -LightBlue = (43,169,255) - -# -# the different materials. -# -m1=[SPECULAR,0.0,0.0,0.6,DIFFUSE,0.0,0.0,0.8,SHININESS,20.0,LMNULL] -m2=[SPECULAR,0.8,0.0,0.1,DIFFUSE,0.8,0.0,0.3,SHININESS,120.0,LMNULL] -m3=[SPECULAR,0.0,1.0,0.0,DIFFUSE,0.0,0.6,0.0,SHININESS,120.0,LMNULL] - -# -# lightsources -# -light1 = [LCOLOR,1.0,1.0,1.0,POSITION,15.0,15.0,0.0,1.0,LMNULL] -light2 = [LCOLOR,1.0,1.0,1.0,POSITION,-15.0,15.0,0.0,1.0,LMNULL] - -# -# the lightmodel -# -model = [AMBIENT,0.2,0.2,0.2,LMNULL] - -# -# initgl : opens the window, configures the pipeline to 2buf and zbuf, -# sets the viewing, defines and binds the materials -# -def initgl () : - # - # open window - # - foreground () - keepaspect (1, 1) - prefposition (100, 500, 100, 500) - w = winopen ('PYTHON lights') - keepaspect (1, 1) - winconstraints() - # - # configure pipeline (zbuf, 2buf, GOURAUD and RGBmode) - # - zbuffer (1) - doublebuffer () - shademodel (GOURAUD) - RGBmode () - gconfig () - # - # define and bind materials (set perspective BEFORE loadmat !) - # - mmode(MVIEWING) - perspective (900, 1.0, 1.0, 20.0) - loadmatrix(idmat) - lmdef(DEFMATERIAL, 1, m1) - lmdef(DEFMATERIAL, 2, m2) - lmdef(DEFMATERIAL, 3, m3) - lmdef(DEFLIGHT, 1, light1) - lmdef(DEFLIGHT, 2, light2) - lmdef(DEFLMODEL, 1, model) - lmbind(LIGHT0,1) - lmbind(LIGHT1,2) - lmbind(LMODEL,1) - # - # set viewing - # - lookat (0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0) - # - # ask for the REDRAW and ESCKEY events - # - qdevice(DEVICE.MOUSE3) - qdevice(DEVICE.MOUSE2) - qdevice(DEVICE.REDRAW) - qdevice(DEVICE.ESCKEY) - -# -# GoForIT : use 2buf to redraw the object 2n times. index i is used as -# the (smoothly changing) rotation angle -# -def GoForIt(i) : - freeze = 1 - while 1 : - if freeze <> 0 : - i = i + 1 - # - # clear z-buffer and clear background to light-blue - # - zclear() - c3i (LightBlue) - clear() - # - # draw the 3 traiangles scaled above each other. - # - viewobj(float(i),[1.0,1.0,1.0],[1.0,1.0,1.0],1) - viewobj(float(i),[0.75,0.75,0.75],[0.0,2.0,2.0],2) - viewobj(float(i),[0.5,0.5,0.5],[0.0,4.0,4.0],3) - # - swapbuffers() - # - if qtest() <> 0 : - dev, val = qread() - if dev == DEVICE.ESCKEY : - break - elif dev == DEVICE.REDRAW : - reshapeviewport () - elif dev == DEVICE.MOUSE3 and val <> 0 : - freeze = 1 - freeze - elif dev == DEVICE.MOUSE2 and val <> 0 : - i = i + 1 - - -# the main program -# -def main () : - initgl () - GoForIt (0) - -# -# exec main -# -main () |