Someone just had to do this!
size# = 50
do
cls
if mouseclick()=1 then inc size#,1
if mouseclick()=2 then dec size#,1
teapot(mousex(), mousey(), size#, 1,1,1,1)
loop
suspend for key
function teapot(x as integer, y as integer, size# as float, base as boolean, lid as boolean, handle as boolean, spout as boolean )
if spout
rem spout
line size#+x,-size#*0.25+y,size#*1.3+x,-size#*0.5+y
line size#*1.3+x,-size#*0.5+y, size#*1.4+x,-size#*0.8+y
line size#*1.4+x,-size#*0.8+y, size#*1.6+x, -size#*0.85+y
line size#*1.6+x, -size#*0.85+y, size#*1.25+x,-size#*0.85+y
line size#*1.25+x,-size#*0.85+y, size#*1.1+x, -size#*0.55+y
line size#*1.1+x, -size#*0.55+y, size#+x, -size#*0.5+y
endif
if base
rem base
line -size#*0.75+x,y,size#*.75+x,y
line -size#*0.75+x,y,-size#+x,-size#*0.1+y
line size#*0.75+x,y,size#+x,-size#*0.1+y
line size#+x,-size#*0.1+y,size#+x,-size#*0.5+y
line -size#+x,-size#*0.1+y,-size#+x,-size#*0.5+y
line size#+x,-size#*0.5+y,size#*0.75+x,-size#+y
line -size#+x,-size#*0.5+y,-size#*0.75+x,-size#+y
endif
if lid
rem lid
line size#*0.1+x,-size#*1.1+y,size#*0.75+x,-size#+y
line -size#*0.1+x,-size#*1.1+y,-size#*0.75+x,-size#+y
line size#*0.1+x, -size#*1.1+y, size#*0.1+x, -size#*1.2+y
line -size#*0.1+x, -size#*1.1+y, -size#*0.1+x, -size#*1.2+y
line size#*0.1+x,-size#*1.2+y,size#*0.2+x,-size#*1.3+y
line -size#*0.1+x,-size#*1.2+y,-size#*0.2+x,-size#*1.3+y
line size#*0.2+x, -size#*1.3+y, size#*0.2+x, -size#*1.35+y
line -size#*0.2+x, -size#*1.3+y, -size#*0.2+x, -size#*1.35+y
line size#*0.2+x, -size#*1.35+y, x, -size#*1.4+y
line -size#*0.2+x, -size#*1.35+y, x, -size#*1.4+y
endif
if handle
rem handle
line -size#+x,-size#*0.25+y,-size#*1.4+x,-size#*0.5+y
line -size#*1.4+x,-size#*0.5+y,-size#*1.4+x,-size#*0.6+y
line -size#*1.4+x,-size#*0.6+y,-size#*1.3+x,-size#*0.7+y
line -size#*1.3+x,-size#*0.7+y, -size#*0.9+x, -size#*0.75+y
endif
endfunction
and here's a cube
function cube(x as integer, y as integer, size# as float)
s# = size#/2
depth = s#
box x-s#,y-s#,x+s#,y-s#+1
box x-s#,y+s#,x+s#,y+s#+1
box x-s#,y-s#,x-s#+1,y+s#
box x+s#,y-s#,x+s#+1,y+s#
line x-s#,y-s#,x,y-s#-depth
line x+s#,y-s#,x+size#,y-s#-depth
box x,y-s#-depth,x+size#,(y-s#-depth)+1
line x+s#,y+s#,x+size#,y+s#-depth
box x+size#,y-s#-depth,x+size#+1,y+s#-depth
endfunction
"eureka" - Archimedes