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
			
							Space Voyage v2
- 
				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
- Attachments
 - 
			
		
				
- image.jpg (122.46 KiB) Viewed 2742 times
 
 - 
			
		
				
- image.jpg (112.65 KiB) Viewed 2742 times
 
 - 
			
		
				
- image.jpg (113.13 KiB) Viewed 2742 times