#!/usr/local/bin/sbasic -g
' 3d.bas
' 07/06/2000

d=100*(ymax/160):t=.7:p=1.3
redraw
repeat
	k=inkey$
	if k="1":t=t+.1:redraw
	elif k="2":t=t-.1:redraw
	elif k="3":p=p+.1:redraw
	elif k="4":p=p-.1:redraw
	elif k="5":d=d+10:redraw
	elif k="6":d=d-10:redraw
	endif
until k="q"
end

'
'	sxediasmos olvn v
'
sub redraw
cls
? "1/2=+-è, 3/4=+-ö, 5/6=+-d, q=quit"

st=sin(t):ct=cos(t)
sp=sin(p):cp=cos(p)

restore cubeData
calcPt
pset sx,sy
for i=1 to 15
	calcPt
	line sx,sy
next
showpage
end

'
'	ypologismos sx,sy (3d->2d)
'
sub calcPt
read x,y,z
xe=-x*st+y*ct
ye=-x*ct*cp-y*st*cp+z*sp
ze=-x*sp*ct-y*st*sp-z*cp+4
sx=d*xe/ze+xmax/2
sy=d*ye/ze+ymax/2
end

'
'	o kybos (lineto)
'
label cubeData
1 data 1,1,1
2 data 1,-1,1
3 data -1,-1,1
4 data -1,1,1
5 data 1,1,1
6 data 1,1,-1
7 data 1,-1,-1
8 data -1,-1,-1
9 data -1,1,-1
10 data 1,1,-1
11 data 1,-1,1
12 data 1,-1,-1
13 data -1,-1,1
14 data -1,-1,-1
15 data -1,1,1
16 data -1,1,-1


