rem Bezier Patch Demo
rem By Jim Shaw 28/6/2002

dim cameraorient(3)
dim v(9)

rem patch data 32 patches with 4x4 control points
dim p(32,4,4,3)
dim q(32,4,4,3)

for n = 1 to 32
	for x = 1 to 4
		for y = 1 to 4
			read p(n,x,y,1), p(n,x,y,3), p(n,x,y,2)
			rem pre-scale the model
			p(n,x,y,1) = p(n,x,y,1)*2
			p(n,x,y,2) = -p(n,x,y,2)*2+128
			p(n,x,y,3) = p(n,x,y,3)*2
		next y
	next x
next n

rem open the screen
open window 640,512
window origin "cc" 
db=1

contbits = 0

rem set the parameters
mode = 2
submode = 0
divx = 2
divy = 2

label start

setdrawbuf db
db=1-db
setdispbuf db
clear window

rem check the controller
k = or (peek("port1"),contbits)
if (and(k,16384)<>0) then mode = mode + 1: mode = mod(mode,3): fi
if (and(k,8192)<>0) then submode = submode + 1: submode = mod(submode,6): fi
if (and(k,16)<>0) divy = divy + 1
if (and(k,32)<>0) divx = divx + 1
if (and(k,64)<>0) then divy = divy - 1: if (divy < 1) divy = 1: fi
if (and(k,128)<>0) then divx = divx - 1: if (divx < 1) divx = 1: fi
contbits = 0

rem rotate the camera
cameraorient(1) = cameraorient(1) + 0.05
cameraorient(2) = cameraorient(2) + 0.07
cameraorient(3) = cameraorient(3) + 0.09

rem transform the control points
gosub settransform
for n = 1 to 32
	contbits = or(peek("port1"),contbits)
	for y = 1 to 4
		for x = 1 to 4
			q(n,x,y,1) = p(n,x,y,1) * v(1) + p(n,x,y,2) * v(4) + p(n,x,y,3) * v(7)
			q(n,x,y,2) = p(n,x,y,1) * v(2) + p(n,x,y,2) * v(5) + p(n,x,y,3) * v(8)
			q(n,x,y,3) = p(n,x,y,1) * v(3) + p(n,x,y,2) * v(6) + p(n,x,y,3) * v(9)
		next x
	next y
next n

setrgb 1,255,255,255
text -320,-240,"X - Next Mode, O - Next Submode"
text -320,-220,"Arrows - change number of subdivisions"
text -200,240,"Bezier Surface Demo By Jim Shaw"
if (mode = 0) then
	rem draw control points as dots
	text -300,-200,"Control Surface Coordinates"
	for n = 1 to 32
		contbits = or(peek("port1"),contbits)
		if (n < 11) then
			setrgb 1,128+12*n,0,0
		elsif (n < 22) then
			setrgb 1,0,128+12*(n-11),0
		else
			setrgb 1,0,0,128+10*n-23
		fi
		for y = 1 to 4
			for x = 1 to 4
				dot q(n,x,y,1),q(n,x,y,2)
			next x
		next y
	next n
elsif (mode = 1) then
	rem draw the control surfaces
	text -300,-200,"Control Surface Polygons"
	for n = 1 to 32
		contbits = or(peek("port1"),contbits)
		if (n < 11) then
			setrgb 1,128+12*n,0,0
		elsif (n < 22) then
			setrgb 1,0,128+12*(n-11),0
		else
			setrgb 1,0,0,128+10*n-23
		fi
		for y = 1 to 3
			for x = 1 to 3
				fill triangle q(n,x,y,1),q(n,x,y,2) to q(n,x+1,y,1),q(n,x+1,y,2) to q(n,x,y+1,1),q(n,x,y+1,2)
				fill triangle q(n,x+1,y,1),q(n,x+1,y,2) to q(n,x,y+1,1),q(n,x,y+1,2) to q(n,x+1,y+1,1),q(n,x+1,y+1,2)
			next x
		next y
	next n
elseif (mode = 2) then
	rem draw the subdivided patches

	setrgb 1,255,255,255
	text -300,-180,"X-Divs:"+str$(divx)+" Y-Divs:"+str$(divy)

	stepx = 1/divx
	stepy = 1/divy

	dim b(divx+1,divy+1,3)

	for n = 1 to 32
		contbits = or(peek("port1"),contbits)

		rem subdivide this patch
		py = 1
		for v = 0 to 1 step stepy
			px = 1
			v1 = 1-v
			v1s = v1*v1
			v1c = v1s*v1
			vs = v*v
			vc = vs*v
			v1sv = v1s*v
			v1vs = v1*vs
			for u = 0 to 1 step stepx
				u1 = 1-u
				for c = 1 to 3
					b(px,py,c)=               u1*u1*u1* (q(n,1,1,c)*v1c + 3*q(n,2,1,c)*v1sv + 3*q(n,3,1,c)*v1vs + q(n,4,1,c)*vc)
					b(px,py,c)=b(px,py,c) + 3*u1*u1*u*  (q(n,1,2,c)*v1c + 3*q(n,2,2,c)*v1sv + 3*q(n,3,2,c)*v1vs + q(n,4,2,c)*vc)
					b(px,py,c)=b(px,py,c) + 3*u1*u*u*   (q(n,1,3,c)*v1c + 3*q(n,2,3,c)*v1sv + 3*q(n,3,3,c)*v1vs + q(n,4,3,c)*vc)
					b(px,py,c)=b(px,py,c) +   u*u*u*    (q(n,1,4,c)*v1c + 3*q(n,2,4,c)*v1sv + 3*q(n,3,4,c)*v1vs + q(n,4,4,c)*vc)
				next c

				px = px + 1
			next u
			py = py + 1
		next v

		setrgb 1,255,255,255
		if (submode = 0) then
			text -300,-200,"Subdivided Surface"
			for y = 1 to divy
				for x = 1 to divx
					fill triangle b(x,y,1),b(x,y,2) to b(x+1,y,1),b(x+1,y,2) to b(x,y+1,1),b(x,y+1,2)
					fill triangle b(x+1,y+1,1),b(x+1,y+1,2) to b(x+1,y,1),b(x+1,y,2) to b(x,y+1,1),b(x,y+1,2)
				next x
			next y
		elsif (submode = 1) then
			text -300,-200,"Subdivided Surface Wireframe"
			for y = 1 to divy
				for x = 1 to divx
					new curve
					line to b(x,y+1,1),b(x,y+1,2)
					line to b(x,y,1),b(x,y,2)
					line to b(x+1,y,1),b(x+1,y,2)
					line to b(x,y+1,1),b(x,y+1,2)
					line to b(x+1,y+1,1),b(x+1,y+1,2)
					line to b(x+1,y,1),b(x+1,y,2)
				next x
			next y
		elsif (submode = 2) then
			text -300,-200,"Subdivided Surface Coordinates"
			for y = 1 to divy
				for x = 1 to divx
					dot b(x,y,1),b(x,y,2)
				next x
			next y
		elsif (submode = 3) then
			text -300,-200,"Subdivided Surface - False Colour"
			for y = 1 to divy
				for x = 1 to divx
	
					x1 = b(x,y,1)
					x2 = b(x+1,y,1)
					x3 = b(x,y+1,1)
					y1 = b(x,y,2)
					y2 = b(x+1,y,2)
					y3 = b(x,y+1,2)

					rem if ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)<=0) then
						setrgb 1,abs(x1),abs(y1),abs(b(x,y,3))
						setrgb 2,abs(x2),abs(y2),abs(b(x+1,y,3))
						setrgb 3,abs(x3),abs(y3),abs(b(x,y+1,3))
						gtriangle x1,y1 to x2,y2 to x3,y3
						setrgb 1,abs(b(x+1,y+1,1)),abs(b(x+1,y+1,2)),abs(b(x+1,y+1,3))
						gtriangle b(x+1,y+1,1),b(x+1,y+1,2) to x2,y2 to x3,y3
				next x
			next y
		elsif (submode = 4) then
			text -300,-200,"Subdivided Surface - Greyscale"
			for y = 1 to divy
				for x = 1 to divx
	
					x1 = b(x,y,1)
					x2 = b(x+1,y,1)
					x3 = b(x,y+1,1)
					y1 = b(x,y,2)
					y2 = b(x+1,y,2)
					y3 = b(x,y+1,2)

					setrgb 1,abs(x1),abs(x1),abs(x1)
					setrgb 2,abs(x2),abs(x2),abs(x2)
					setrgb 3,abs(x3),abs(x3),abs(x3)
					gtriangle x1,y1 to x2,y2 to x3,y3
					setrgb 1,abs(b(x+1,y+1,1)),abs(b(x+1,y+1,1)),abs(b(x+1,y+1,1))
					gtriangle b(x+1,y+1,1),b(x+1,y+1,2) to x2,y2 to x3,y3
				next x
			next y
		elsif (submode = 5) then
			text -300,-200,"Subdivided Surface - Flat Shaded"
			for y = 1 to divy
				for x = 1 to divx
	
					x1 = b(x,y,1)
					x2 = b(x+1,y,1)
					x3 = b(x,y+1,1)
					y1 = b(x,y,2)
					y2 = b(x+1,y,2)
					y3 = b(x,y+1,2)

					g = abs(x1) + abs(y1) + abs(b(x,y,2))/3
					setrgb 1,g,g,g
					fill triangle x1,y1 to x2,y2 to x3,y3
					fill triangle b(x+1,y+1,1),b(x+1,y+1,2) to x2,y2 to x3,y3
				next x
			next y
		fi
	next n
fi

goto start

label settransform
 A=cos(cameraorient(1))
 B=sin(cameraorient(1))
 C=cos(cameraorient(2))
 D=sin(cameraorient(2))
 E=cos(cameraorient(3))
 F=sin(cameraorient(3))

 AD=A*D
 BD=B*D

 v(1)=C*E
 v(2)=-C*F
 v(3)=D
 v(4)=BD*E+A*F
 v(5)=-BD*F+A*E
 v(6)=-B*C
 v(7)=-AD*E+B*F
 v(8)=AD*F+B*E
 v(9)=A*C
return

label teapot
'xBody_Back
data    -80.00,    0.00,   30.00,       -80.00,  -44.80,   30.00,       -44.80,  -80.00,   30.00,         0.00,  -80.00,   30.00
data    -80.00,    0.00,   12.00,       -80.00,  -44.80,   12.00,       -44.80,  -80.00,   12.00,         0.00,  -80.00,   12.00
data    -60.00,    0.00,    3.00,       -60.00,  -33.60,    3.00,       -33.60,  -60.00,    3.00,         0.00,  -60.00,    3.00
data    -60.00,    0.00,    0.00,       -60.00,  -33.60,    0.00,       -33.60,  -60.00,    0.00,         0.00,  -60.00,    0.00

data      0.00,  -80.00,   30.00,        44.80,  -80.00,   30.00,        80.00,  -44.80,   30.00,        80.00,    0.00,   30.00
data      0.00,  -80.00,   12.00,        44.80,  -80.00,   12.00,        80.00,  -44.80,   12.00,        80.00,    0.00,   12.00
data      0.00,  -60.00,    3.00,        33.60,  -60.00,    3.00,        60.00,  -33.60,    3.00,        60.00,    0.00,    3.00
data      0.00,  -60.00,    0.00,        33.60,  -60.00,    0.00,        60.00,  -33.60,    0.00,        60.00,    0.00,    0.00

data    -60.00,    0.00,   90.00,       -60.00,  -33.60,   90.00,       -33.60,  -60.00,   90.00,         0.00,  -60.00,   90.00
data    -70.00,    0.00,   69.00,       -70.00,  -39.20,   69.00,       -39.20,  -70.00,   69.00,         0.00,  -70.00,   69.00
data    -80.00,    0.00,   48.00,       -80.00,  -44.80,   48.00,       -44.80,  -80.00,   48.00,         0.00,  -80.00,   48.00
data    -80.00,    0.00,   30.00,       -80.00,  -44.80,   30.00,       -44.80,  -80.00,   30.00,         0.00,  -80.00,   30.00

data      0.00,  -60.00,   90.00,        33.60,  -60.00,   90.00,        60.00,  -33.60,   90.00,        60.00,    0.00,   90.00
data      0.00,  -70.00,   69.00,        39.20,  -70.00,   69.00,        70.00,  -39.20,   69.00,        70.00,    0.00,   69.00
data      0.00,  -80.00,   48.00,        44.80,  -80.00,   48.00,        80.00,  -44.80,   48.00,        80.00,    0.00,   48.00
data      0.00,  -80.00,   30.00,        44.80,  -80.00,   30.00,        80.00,  -44.80,   30.00,        80.00,    0.00,   30.00

data    -56.00,    0.00,   90.00,       -56.00,  -31.36,   90.00,       -31.36,  -56.00,   90.00,         0.00,  -56.00,   90.00
data    -53.50,    0.00,   95.25,       -53.50,  -29.96,   95.25,       -29.96,  -53.50,   95.25,         0.00,  -53.50,   95.25
data    -57.50,    0.00,   95.25,       -57.50,  -32.20,   95.25,       -32.20,  -57.50,   95.25,         0.00,  -57.50,   95.25
data    -60.00,    0.00,   90.00,       -60.00,  -33.60,   90.00,       -33.60,  -60.00,   90.00,         0.00,  -60.00,   90.00

data      0.00,  -56.00,   90.00,        31.36,  -56.00,   90.00,        56.00,  -31.36,   90.00,        56.00,    0.00,   90.00
data      0.00,  -53.50,   95.25,        29.96,  -53.50,   95.25,        53.50,  -29.96,   95.25,        53.50,    0.00,   95.25
data      0.00,  -57.50,   95.25,        32.20,  -57.50,   95.25,        57.50,  -32.20,   95.25,        57.50,    0.00,   95.25
data      0.00,  -60.00,   90.00,        33.60,  -60.00,   90.00,        60.00,  -33.60,   90.00,        60.00,    0.00,   90.00

'xBody_Front
data     80.00,    0.00,   30.00,        80.00,   44.80,   30.00,        44.80,   80.00,   30.00,         0.00,   80.00,   30.00
data     80.00,    0.00,   12.00,        80.00,   44.80,   12.00,        44.80,   80.00,   12.00,         0.00,   80.00,   12.00
data     60.00,    0.00,    3.00,        60.00,   33.60,    3.00,        33.60,   60.00,    3.00,         0.00,   60.00,    3.00
data     60.00,    0.00,    0.00,        60.00,   33.60,    0.00,        33.60,   60.00,    0.00,         0.00,   60.00,    0.00

data      0.00,   80.00,   30.00,       -44.80,   80.00,   30.00,       -80.00,   44.80,   30.00,       -80.00,    0.00,   30.00
data      0.00,   80.00,   12.00,       -44.80,   80.00,   12.00,       -80.00,   44.80,   12.00,       -80.00,    0.00,   12.00
data      0.00,   60.00,    3.00,       -33.60,   60.00,    3.00,       -60.00,   33.60,    3.00,       -60.00,    0.00,    3.00
data      0.00,   60.00,    0.00,       -33.60,   60.00,    0.00,       -60.00,   33.60,    0.00,       -60.00,    0.00,    0.00

data     60.00,    0.00,   90.00,        60.00,   33.60,   90.00,        33.60,   60.00,   90.00,         0.00,   60.00,   90.00
data     70.00,    0.00,   69.00,        70.00,   39.20,   69.00,        39.20,   70.00,   69.00,         0.00,   70.00,   69.00
data     80.00,    0.00,   48.00,        80.00,   44.80,   48.00,        44.80,   80.00,   48.00,         0.00,   80.00,   48.00
data     80.00,    0.00,   30.00,        80.00,   44.80,   30.00,        44.80,   80.00,   30.00,         0.00,   80.00,   30.00

data      0.00,   60.00,   90.00,       -33.60,   60.00,   90.00,       -60.00,   33.60,   90.00,       -60.00,    0.00,   90.00
data      0.00,   70.00,   69.00,       -39.20,   70.00,   69.00,       -70.00,   39.20,   69.00,       -70.00,    0.00,   69.00
data      0.00,   80.00,   48.00,       -44.80,   80.00,   48.00,       -80.00,   44.80,   48.00,       -80.00,    0.00,   48.00
data      0.00,   80.00,   30.00,       -44.80,   80.00,   30.00,       -80.00,   44.80,   30.00,       -80.00,    0.00,   30.00

data     56.00,    0.00,   90.00,        56.00,   31.36,   90.00,        31.36,   56.00,   90.00,         0.00,   56.00,   90.00
data     53.50,    0.00,   95.25,        53.50,   29.96,   95.25,        29.96,   53.50,   95.25,         0.00,   53.50,   95.25
data     57.50,    0.00,   95.25,        57.50,   32.20,   95.25,        32.20,   57.50,   95.25,         0.00,   57.50,   95.25
data     60.00,    0.00,   90.00,        60.00,   33.60,   90.00,        33.60,   60.00,   90.00,         0.00,   60.00,   90.00

data      0.00,   56.00,   90.00,       -31.36,   56.00,   90.00,       -56.00,   31.36,   90.00,       -56.00,    0.00,   90.00
data      0.00,   53.50,   95.25,       -29.96,   53.50,   95.25,       -53.50,   29.96,   95.25,       -53.50,    0.00,   95.25
data      0.00,   57.50,   95.25,       -32.20,   57.50,   95.25,       -57.50,   32.20,   95.25,       -57.50,    0.00,   95.25
data      0.00,   60.00,   90.00,       -33.60,   60.00,   90.00,       -60.00,   33.60,   90.00,       -60.00,    0.00,   90.00

'Handle
data    -64.00,    0.00,   75.00,       -64.00,   12.00,   75.00,       -60.00,   12.00,   84.00,       -60.00,    0.00,   84.00
data    -92.00,    0.00,   75.00,       -92.00,   12.00,   75.00,      -100.00,   12.00,   84.00,      -100.00,    0.00,   84.00
data   -108.00,    0.00,   75.00,      -108.00,   12.00,   75.00,      -120.00,   12.00,   84.00,      -120.00,    0.00,   84.00
data   -108.00,    0.00,   66.00,      -108.00,   12.00,   66.00,      -120.00,   12.00,   66.00,      -120.00,    0.00,   66.00

data    -60.00,    0.00,   84.00,       -60.00,  -12.00,   84.00,       -64.00,  -12.00,   75.00,       -64.00,    0.00,   75.00
data   -100.00,    0.00,   84.00,      -100.00,  -12.00,   84.00,       -92.00,  -12.00,   75.00,       -92.00,    0.00,   75.00
data   -120.00,    0.00,   84.00,      -120.00,  -12.00,   84.00,      -108.00,  -12.00,   75.00,      -108.00,    0.00,   75.00
data   -120.00,    0.00,   66.00,      -120.00,  -12.00,   66.00,      -108.00,  -12.00,   66.00,      -108.00,    0.00,   66.00

data   -108.00,    0.00,   66.00,      -108.00,   12.00,   66.00,      -120.00,   12.00,   66.00,      -120.00,    0.00,   66.00
data   -108.00,    0.00,   57.00,      -108.00,   12.00,   57.00,      -120.00,   12.00,   48.00,      -120.00,    0.00,   48.00
data   -100.00,    0.00,   39.00,      -100.00,   12.00,   39.00,      -106.00,   12.00,   31.50,      -106.00,    0.00,   31.50
data    -80.00,    0.00,   30.00,       -80.00,   12.00,   30.00,       -76.00,   12.00,   18.00,       -76.00,    0.00,   18.00

data   -120.00,    0.00,   66.00,      -120.00,  -12.00,   66.00,      -108.00,  -12.00,   66.00,      -108.00,    0.00,   66.00
data   -120.00,    0.00,   48.00,      -120.00,  -12.00,   48.00,      -108.00,  -12.00,   57.00,      -108.00,    0.00,   57.00
data   -106.00,    0.00,   31.50,      -106.00,  -12.00,   31.50,      -100.00,  -12.00,   39.00,      -100.00,    0.00,   39.00
data    -76.00,    0.00,   18.00,       -76.00,  -12.00,   18.00,       -80.00,  -12.00,   30.00,       -80.00,    0.00,   30.00

'Spout
data     68.00,    0.00,   51.00,        68.00,   26.40,   51.00,        68.00,   26.40,   18.00,        68.00,    0.00,   18.00
data    104.00,    0.00,   51.00,       104.00,   26.40,   51.00,       124.00,   26.40,   27.00,       124.00,    0.00,   27.00
data     92.00,    0.00,   78.00,        92.00,   10.00,   78.00,        96.00,   10.00,   75.00,        96.00,    0.00,   75.00
data    108.00,    0.00,   90.00,       108.00,   10.00,   90.00,       132.00,   10.00,   90.00,       132.00,    0.00,   90.00

data     68.00,    0.00,   18.00,        68.00,  -26.40,   18.00,        68.00,  -26.40,   51.00,        68.00,    0.00,   51.00
data    124.00,    0.00,   27.00,       124.00,  -26.40,   27.00,       104.00,  -26.40,   51.00,       104.00,    0.00,   51.00
data     96.00,    0.00,   75.00,        96.00,  -10.00,   75.00,        92.00,  -10.00,   78.00,        92.00,    0.00,   78.00
data    132.00,    0.00,   90.00,       132.00,  -10.00,   90.00,       108.00,  -10.00,   90.00,       108.00,    0.00,   90.00

data    108.00,    0.00,   90.00,       108.00,   10.00,   90.00,       132.00,   10.00,   90.00,       132.00,    0.00,   90.00
data    112.00,    0.00,   93.00,       112.00,   10.00,   93.00,       141.00,   10.00,   93.75,       141.00,    0.00,   93.75
data    116.00,    0.00,   93.00,       116.00,    6.00,   93.00,       138.00,    6.00,   94.50,       138.00,    0.00,   94.50
data    112.00,    0.00,   90.00,       112.00,    6.00,   90.00,       128.00,    6.00,   90.00,       128.00,    0.00,   90.00

data    132.00,    0.00,   90.00,       132.00,  -10.00,   90.00,       108.00,  -10.00,   90.00,       108.00,    0.00,   90.00
data    141.00,    0.00,   93.75,       141.00,  -10.00,   93.75,       112.00,  -10.00,   93.00,       112.00,    0.00,   93.00
data    138.00,    0.00,   94.50,       138.00,   -6.00,   94.50,       116.00,   -6.00,   93.00,       116.00,    0.00,   93.00
data    128.00,    0.00,   90.00,       128.00,   -6.00,   90.00,       112.00,   -6.00,   90.00,       112.00,    0.00,   90.00

'Lip
data     50.00,    0.00,   90.00,        50.00,   28.00,   90.00,        28.00,   50.00,   90.00,         0.00,   50.00,   90.00
data     52.00,    0.00,   90.00,        52.00,   29.12,   90.00,        29.12,   52.00,   90.00,         0.00,   52.00,   90.00
data     54.00,    0.00,   90.00,        54.00,   30.24,   90.00,        30.24,   54.00,   90.00,         0.00,   54.00,   90.00
data     56.00,    0.00,   90.00,        56.00,   31.36,   90.00,        31.36,   56.00,   90.00,         0.00,   56.00,   90.00

data      0.00,   50.00,   90.00,       -28.00,   50.00,   90.00,       -50.00,   28.00,   90.00,       -50.00,    0.00,   90.00
data      0.00,   52.00,   90.00,       -29.12,   52.00,   90.00,       -52.00,   29.12,   90.00,       -52.00,    0.00,   90.00
data      0.00,   54.00,   90.00,       -30.24,   54.00,   90.00,       -54.00,   30.24,   90.00,       -54.00,    0.00,   90.00
data      0.00,   56.00,   90.00,       -31.36,   56.00,   90.00,       -56.00,   31.36,   90.00,       -56.00,    0.00,   90.00

data    -50.00,    0.00,   90.00,       -50.00,  -28.00,   90.00,       -28.00,  -50.00,   90.00,         0.00,  -50.00,   90.00
data    -52.00,    0.00,   90.00,       -52.00,  -29.12,   90.00,       -29.12,  -52.00,   90.00,         0.00,  -52.00,   90.00
data    -54.00,    0.00,   90.00,       -54.00,  -30.24,   90.00,       -30.24,  -54.00,   90.00,         0.00,  -54.00,   90.00
data    -56.00,    0.00,   90.00,       -56.00,  -31.36,   90.00,       -31.36,  -56.00,   90.00,         0.00,  -56.00,   90.00

data      0.00,  -50.00,   90.00,        28.00,  -50.00,   90.00,        50.00,  -28.00,   90.00,        50.00,    0.00,   90.00
data      0.00,  -52.00,   90.00,        29.12,  -52.00,   90.00,        52.00,  -29.12,   90.00,        52.00,    0.00,   90.00
data      0.00,  -54.00,   90.00,        30.24,  -54.00,   90.00,        54.00,  -30.24,   90.00,        54.00,    0.00,   90.00
data      0.00,  -56.00,   90.00,        31.36,  -56.00,   90.00,        56.00,  -31.36,   90.00,        56.00,    0.00,   90.00

'Lid
data      8.00,    0.00,  102.00,         8.00,    4.48,  102.00,         4.48,    8.00,  102.00,         0.00,    8.00,  102.00
data     16.00,    0.00,   96.00,        16.00,    8.96,   96.00,         8.96,   16.00,   96.00,         0.00,   16.00,   96.00
data     52.00,    0.00,   96.00,        52.00,   29.12,   96.00,        29.12,   52.00,   96.00,         0.00,   52.00,   96.00
data     52.00,    0.00,   90.00,        52.00,   29.12,   90.00,        29.12,   52.00,   90.00,         0.00,   52.00,   90.00

data      0.00,    8.00,  102.00,        -4.48,    8.00,  102.00,        -8.00,    4.48,  102.00,        -8.00,    0.00,  102.00
data      0.00,   16.00,   96.00,        -8.96,   16.00,   96.00,       -16.00,    8.96,   96.00,       -16.00,    0.00,   96.00
data      0.00,   52.00,   96.00,       -29.12,   52.00,   96.00,       -52.00,   29.12,   96.00,       -52.00,    0.00,   96.00
data      0.00,   52.00,   90.00,       -29.12,   52.00,   90.00,       -52.00,   29.12,   90.00,       -52.00,    0.00,   90.00

data     -8.00,    0.00,  102.00,        -8.00,   -4.48,  102.00,        -4.48,   -8.00,  102.00,         0.00,   -8.00,  102.00
data    -16.00,    0.00,   96.00,       -16.00,   -8.96,   96.00,        -8.96,  -16.00,   96.00,         0.00,  -16.00,   96.00
data    -52.00,    0.00,   96.00,       -52.00,  -29.12,   96.00,       -29.12,  -52.00,   96.00,         0.00,  -52.00,   96.00
data    -52.00,    0.00,   90.00,       -52.00,  -29.12,   90.00,       -29.12,  -52.00,   90.00,         0.00,  -52.00,   90.00

data      0.00,   -8.00,  102.00,         4.48,   -8.00,  102.00,         8.00,   -4.48,  102.00,         8.00,    0.00,  102.00
data      0.00,  -16.00,   96.00,         8.96,  -16.00,   96.00,        16.00,   -8.96,   96.00,        16.00,    0.00,   96.00
data      0.00,  -52.00,   96.00,        29.12,  -52.00,   96.00,        52.00,  -29.12,   96.00,        52.00,    0.00,   96.00
data      0.00,  -52.00,   90.00,        29.12,  -52.00,   90.00,        52.00,  -29.12,   90.00,        52.00,    0.00,   90.00

'Knob
data      0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00
data     32.00,    0.00,  120.00,        32.00,   18.00,  120.00,        18.00,   32.00,  120.00,         0.00,   32.00,  120.00
data      0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00
data      8.00,    0.00,  102.00,         8.00,    4.48,  102.00,         4.48,    8.00,  102.00,         0.00,    8.00,  102.00

data      0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00
data      0.00,   32.00,  120.00,       -18.00,   32.00,  120.00,       -32.00,   18.00,  120.00,       -32.00,    0.00,  120.00
data      0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00
data      0.00,    8.00,  102.00,        -4.48,    8.00,  102.00,        -8.00,    4.48,  102.00,        -8.00,    0.00,  102.00

data      0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00
data    -32.00,    0.00,  120.00,       -32.00,  -18.00,  120.00,       -18.00,  -32.00,  120.00,         0.00,  -32.00,  120.00
data      0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00
data     -8.00,    0.00,  102.00,        -8.00,   -4.48,  102.00,        -4.48,   -8.00,  102.00,         0.00,   -8.00,  102.00

data      0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00,         0.00,    0.00,  120.00
data      0.00,  -32.00,  120.00,        18.00,  -32.00,  120.00,        32.00,  -18.00,  120.00,        32.00,    0.00,  120.00
data      0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00,         0.00,    0.00,  108.00
data      0.00,   -8.00,  102.00,         4.48,   -8.00,  102.00,         8.00,   -4.48,  102.00,         8.00,    0.00,  102.00

 
