32 lines
1.1 KiB
Text
32 lines
1.1 KiB
Text
Module Cube3D {
|
|
form 80, 32
|
|
smooth on // enable GDI+ smooth lines
|
|
zoff=0.5773502691896257645091487805019574556@
|
|
cylr=1.6329931618554520654648560498039275946@
|
|
oX=scale.x div 2 : oY=scale.y div 2
|
|
SCALE=min.data(oX, oY)/2*.6
|
|
gradient 0
|
|
theta = 0.0 : dtheta = 1.5 : dt = 1000/60
|
|
ScZof=SCALE/zoff
|
|
ScZofM=SCALE*zoff
|
|
dim cylphi(), x()
|
|
c =(PI/6, 5*PI/6, 3*PI/2, 11*PI/6, PI/2, 7*PI/6) : c*=180/Pi : cylphi()=c // cos() take Degree
|
|
every DT {
|
|
if mouse then (oX, oY)=(mouse.x,mouse.y) : dtheta*=1.05 else dtheta = 1.5
|
|
dim x(6)=oX : for i=0 to 5: x(i) += SCALE*cylr*cos(cylphi(i)+theta):next
|
|
drawcube() : refresh 100 : IF keypress(32) then exit
|
|
theta += dtheta : gradient 0, 5: cursor 0,0
|
|
Print "Press space to exit",,"Press any mouse button to move cube",,Time$(Now)
|
|
}
|
|
sub drawcube()
|
|
for i= 0 to 2
|
|
move x(i), oY-ScZofM:draw to oX,oY-ScZof, 11
|
|
move oX,ScZof+oY:draw to x(i),oY-ScZofM, 9
|
|
move oX,oY+ ScZof:draw to x(5-i),ScZofM+oY
|
|
move x(i),oY-ScZofM:draw to x(i mod 3 + 3),oY+ScZofM, 15
|
|
move oX,oY-ScZof:draw to x(i mod 3 + 3), oY+ScZofM, 7
|
|
move x(i),oY-ScZofM:draw to x((i+1) mod 3 + 3),oY+ScZofM, 13
|
|
next
|
|
end sub
|
|
}
|
|
Cube3D
|