Yay, you can do 3d on your calculator! :D (i may make a 3d game soon)
Thanks to Antarctus for the draw line function
from math import cos,sin,pi from kandinsky import * from time import sleep MODEL=[] def cube3d(x1,y1,z1,x2,y2,z2): line3d(x1,y1,z1,x1,y2,z1) line3d(x1,y1,z1,x2,y1,z1) line3d(x2,y1,z1,x2,y2,z1) line3d(x1,y2,z1,x2,y2,z1) line3d(x1,y1,z2,x1,y2,z2) line3d(x1,y1,z2,x2,y1,z2) line3d(x2,y1,z2,x2,y2,z2) line3d(x1,y2,z2,x2,y2,z2) line3d(x1,y1,z1,x1,y1,z2) line3d(x2,y1,z1,x2,y1,z2) line3d(x1,y2,z1,x1,y2,z2) line3d(x2,y2,z1,x2,y2,z2) def line3d(x1,y1,z1,x2,y2,z2): point3d(x1,y1,z1) point3d(x2,y2,z2) def point3d(x,y,z): MODEL.append([x,y,z]) def line(x1,y1,x2,y2,c): w=x2-x1 h=y2-y1 if abs(w)>=abs(h): d=h/w for i in range(0,w,(w>0)*2-1): set_pixel(x1+i,y1+int(d*i+0.5),c) else: d=w/h for i in range(0,h,(h>0)*2-1): set_pixel(x1+int(d*i+0.5),y1+i,c) def render(cosy,siny,cosz,sinz): fill_rect(0,0,320,222,(0,0,0)) draw_string("Full engine coming soon...",30,202,(255,255,255),(0,0,0)) for i in range(0,len(MODEL),2): x1=MODEL[i][0] y1=MODEL[i][1] z1=MODEL[i][2] x2=MODEL[i+1][0] y2=MODEL[i+1][1] z2=MODEL[i+1][2] #Rotations x1,z1=yturn(x1,z1,cosy,siny) x2,z2=yturn(x2,z2,cosy,siny) x1,y1=zturn(x1,y1,cosz,sinz) x2,y2=zturn(x2,y2,cosz,sinz) #Projections px1=int(x1*100/(z1+300)) py1=int(y1*100/(z1+300)) px2=int(x2*100/(z2+300)) py2=int(y2*100/(z2+300)) line(px1+160,py1+100,px2+160,py2+100,(255,255,255)) def yturn(x,z,cosy,siny): return z*siny+x*cosy,z*cosy-x*siny def zturn(x,y,cosz,sinz): return x*cosz-y*sinz,x*sinz+y*cosz cube3d(-100,-100,-100,100,100,100) yrot=0 zrot=0 while True: cosy=cos(yrot) siny=sin(yrot) cosz=cos(zrot) sinz=sin(zrot) render(cosy,siny,cosz,sinz) yrot+=pi/90 zrot=sin(yrot) sleep(0.01)