mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			140 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/local/bin/python
 | 
						|
 | 
						|
#   backface
 | 
						|
#
 | 
						|
#   draw a cube that can run with backface() turned on or off.
 | 
						|
#   cube is moved when LEFTMOUSE is pressed and mouse itself is moved.
 | 
						|
 | 
						|
from gl import *
 | 
						|
from DEVICE import *
 | 
						|
from GL import *
 | 
						|
 | 
						|
CUBE_SIZE = 200.0
 | 
						|
CUBE_OBJ = 1
 | 
						|
 | 
						|
def main () :
 | 
						|
	#
 | 
						|
	x = 0
 | 
						|
	y = 0
 | 
						|
	moveit = 0
 | 
						|
	#
 | 
						|
	initialize()
 | 
						|
	#
 | 
						|
	while (1) :
 | 
						|
		#
 | 
						|
		while (qtest()) :
 | 
						|
			dev, val = qread()
 | 
						|
			#
 | 
						|
			if dev == ESCKEY :
 | 
						|
				backface(0)
 | 
						|
				return
 | 
						|
				#
 | 
						|
			elif dev == REDRAW :
 | 
						|
				reshapeviewport()
 | 
						|
				drawcube(x,y)
 | 
						|
				#
 | 
						|
			elif dev == LEFTMOUSE :
 | 
						|
				#
 | 
						|
				# LEFTMOUSE down
 | 
						|
				moveit = val
 | 
						|
				#
 | 
						|
			elif dev == BKEY :
 | 
						|
				backface(1)
 | 
						|
				drawcube(x,y)
 | 
						|
				#
 | 
						|
			elif dev == FKEY :
 | 
						|
				backface(0)
 | 
						|
				drawcube(x,y)
 | 
						|
				#
 | 
						|
		if moveit :
 | 
						|
			x = getvaluator(MOUSEX)
 | 
						|
			y = getvaluator(MOUSEY)
 | 
						|
			drawcube(x,y)
 | 
						|
 | 
						|
 | 
						|
def initialize () :
 | 
						|
	foreground ()
 | 
						|
	keepaspect (1, 1)
 | 
						|
	gid = winopen('backface')
 | 
						|
	winset(gid)
 | 
						|
	winconstraints()
 | 
						|
	#
 | 
						|
	doublebuffer()
 | 
						|
	gconfig()
 | 
						|
	shademodel(FLAT)
 | 
						|
	#
 | 
						|
	ortho(-1024.0, 1024.0, -1024.0, 1024.0, -1024.0, 1024.0)
 | 
						|
	#
 | 
						|
	qdevice(ESCKEY)
 | 
						|
	qdevice(REDRAW)
 | 
						|
	qdevice(LEFTMOUSE)
 | 
						|
	qdevice(BKEY)
 | 
						|
	qdevice(FKEY)
 | 
						|
	qenter(REDRAW,gid)
 | 
						|
	#
 | 
						|
	backface(1)
 | 
						|
 | 
						|
#
 | 
						|
# define a cube
 | 
						|
def cube () :
 | 
						|
	#
 | 
						|
	# front face
 | 
						|
	pushmatrix()
 | 
						|
	translate(0.0,0.0,CUBE_SIZE)
 | 
						|
	color(RED)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
	#
 | 
						|
	# right face
 | 
						|
	pushmatrix()
 | 
						|
	translate(CUBE_SIZE, 0.0, 0.0)
 | 
						|
	rotate(900, 'y')
 | 
						|
	color(GREEN)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
	#
 | 
						|
	# back face
 | 
						|
	pushmatrix()
 | 
						|
	translate(0.0, 0.0, -CUBE_SIZE)
 | 
						|
	rotate(1800, 'y')
 | 
						|
	color(BLUE)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
	#
 | 
						|
	# left face
 | 
						|
	pushmatrix()
 | 
						|
	translate(-CUBE_SIZE, 0.0, 0.0)
 | 
						|
	rotate(-900, 'y')
 | 
						|
	color(CYAN)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
	#
 | 
						|
	# top face
 | 
						|
	pushmatrix()
 | 
						|
	translate(0.0, CUBE_SIZE, 0.0)
 | 
						|
	rotate(-900, 'x')
 | 
						|
	color(MAGENTA)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
	#
 | 
						|
	# bottom face
 | 
						|
	pushmatrix()
 | 
						|
	translate(0.0, -CUBE_SIZE, 0.0)
 | 
						|
	rotate(900, 'x')
 | 
						|
	color(YELLOW)
 | 
						|
	rectf(-CUBE_SIZE,-CUBE_SIZE,CUBE_SIZE,CUBE_SIZE)
 | 
						|
	popmatrix()
 | 
						|
 | 
						|
def drawcube(x,y) :
 | 
						|
	#
 | 
						|
	pushmatrix()
 | 
						|
	rotate(2*x, 'x')
 | 
						|
	rotate(2*y, 'y')
 | 
						|
	color(BLACK)
 | 
						|
	clear()
 | 
						|
	cube()        
 | 
						|
	popmatrix()
 | 
						|
	swapbuffers()
 | 
						|
 | 
						|
 | 
						|
main ()
 |