Space Voyage v2

Post Reply
DrChip
Posts: 167
Joined: Wed Oct 22, 2014 3:26 pm
My devices: iPhone 4 to 6+,iPad mini to iPad air 2

Space Voyage v2

Post by DrChip »

REM
REM Space Voyage v 2
REM It's not a big program but looks nice!
REM v2 - ported from my misoft code
REM im having problems with the colors on my polys
REM if you know how to fix the lighting on the ship
REM please share.
REM iPhone 6 plus
REM
REM Enjoy!
sw=SCREEN_WIDTH()
sh=SCREEN_HEIGHT()
csw=sw/2
csh=sh/2
GOSUB init


loop:
refresh off
graphics clear 0,0,0
draw COLOR 1,1,1
GOSUB rotate
FOR a=7 TO polys
siz=6-(tz(a)/20)
fill COLOR 0,0,.siz*30
fill RECT tx(a)-siz,ty(a)-siz to tx(a)+siz,ty(a)+siz
fill COLOR .170,.170,siz*30/255
siz=siz-4
fill RECT tx(a)-siz,ty(a)-siz to tx(a)+siz,ty(a)+siz
y(a)=y(a)-2
IF y(a)<-40 THEN
y(a)=y(a)+80
END IF
NEXT a

burn=0
r=90
g=90
b=90
f1=1
f2=3
f3=5
GOSUB draw
f1=2
f2=1
f3=5
GOSUB draw
r=50
g=80
b=50
f1=1
f2=4
f3=3
GOSUB draw
f1=2
f2=4
f3=1
GOSUB draw
r=40
g=40
b=100
f1=4
f2=3
f3=6
GOSUB draw
f1=2
f2=4
f3=6
GOSUB draw
burn=1
fill COLOR 155+lol/255,lol/255,lol/255
f1=3
f2=4
f3=5
GOSUB draw
fill COLOR 155+lol/255,lol/255,lol/255
f1=4
f2=2
f3=5
GOSUB draw
lol=100*SIN(mm/4)
mm=mm+.5
draw COLOR 1,1,1
DRAW TEXT "Space Voyage " at 11,sh-19

draw COLOR 0,0,0
DRAW TEXT "Space Voyage " at 10,sh-20
refresh on
GOTO loop

draw:
'Draw A Face Of The Cube!

vx1= tx(f1)-tx(f2)
vy1= ty(f1)-ty(f2)
vx2= tx(f3)-tx(f2)
vy2= ty(f3)-ty(f2)
IF (vx1*vy2-vx2*vy1)<0 THEN
light=-(tz(f1)+tz(f2)+tz(f3))*5
IF burn=0 THEN
fill COLOR r+light/255,g+light/255,b+light/255
END IF
'TRIANGLE tx(f1),ty(f1), tx(f2),ty(f2), tx(f3),ty(f3)
trix(0)=tx(f1)
triy(0)=ty(f1)
trix(1)=tx(f2)
triy(1)=ty(f2)
trix(2)=tx(f3)
triy(2)=ty(f3)
fill poly trix,triy count 3
draw COLOR 0,0,0
'TRIANGLE tx(f1),ty(f1), tx(f2),ty(f2), tx(f3),ty(f3)
trix(0)=tx(f1)
triy(0)=ty(f1)
trix(1)=tx(f2)
triy(1)=ty(f2)
trix(2)=tx(f3)
triy(2)=ty(f3)
draw poly trix,triy count 3
END IF
RETURN

rotate:
' Rotate And Scale Each Point - Store Result

FOR a=1 TO polys
x1=x(a)
y1=y(a)
z1=z(a)

' X,Y,Z rotations!
xx=x1
yy=y1*cs(xr)+z1*sn(xr)
zz=z1*cs(xr)-y1*sn(xr)
y1=yy
x1=xx*cs(yr)-zz*sn(yr)
z1=xx*sn(yr)+zz*cs(yr)
zz=z1
xx=x1*cs(zr)-y1*sn(zr)
yy=x1*sn(zr)+y1*cs(zr)

'Apply Perspective!
dv=(zz/50)+1
xx=size*(xx/dv)+csw
yy=size*(yy/dv)+csh
tx(a)=xx
ty(a)=yy
tz(a)=zz
NEXT a
xr=xr+1
yr=yr+2
zr=zr+1
IF xr>720 THEN
xr=xr-720
END IF
IF yr>720 THEN
yr=yr-720
END IF
IF zr>720 THEN
zr=zr-720
END IF
RETURN

init:

'This Routine sets the program up.
'Open Gfx Screen
graphics
graphics clear 0,0,0

'Define the necessary variables!
str=41
size=15 ' how big do you want it?
polys=6+str 'The amount of polygons in the object
pi=3.1416 ' Pi
DIM x(polys+1) ' Original X co-ordinate store
DIM y(polys+1) ' Original Y co-ordinate store
DIM z(polys+1) ' Original Z co-ordinate store
DIM tx(polys+1) ' Transformed X co-ordinate store
DIM ty(polys+1) ' Transformed Y co-ordinate store
DIM tz(polys+1) ' Transformed Z co-ordinate store
DIM trix(4), triy(4)
xr=1 ' x rotation
yr=2 ' y rotation
zr=1 ' z rotation

'Define Sine Tables!!
DIM cs(722)
DIM sn(722)
FOR ang=1 TO 720
cs(ang)=COS(ang*(PI/360))
sn(ang)=SIN(ang*(PI/360))
NEXT ang

' Read in the object!
FOR a=1 TO polys
x(a)=-30+RND(60)
y(a)=-40+RND(80)
z(a)=-30+RND(60)
NEXT a
FOR a=1 TO polys-str
READ x(a),y(a),z(a)
NEXT a

'The Object Description As Data!
'The Data Below Describes A Cube.

DATA 0,10,0,10,-10,0,-10,-10,0
DATA 0,-12,5,0,-14,-5
DATA 0,0,2.3
RETURN
Attachments
image.jpg
image.jpg (122.46 KiB) Viewed 1965 times
image.jpg
image.jpg (112.65 KiB) Viewed 1965 times
image.jpg
image.jpg (113.13 KiB) Viewed 1965 times

Post Reply