home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
601-625
/
apd620
/
amos_pro_only
/
vector.amos
/
vector.amosSourceCode
Wrap
AMOS Source Code
|
1986-08-03
|
2KB
|
97 lines
While Screen<>-1
Screen Close Screen
Wend
'
Screen Open 0,320,256,2,Lowres
Curs Off
Flash Off
Hide On
Palette $0,$FFF
NUM_PTS=8
NUM_LINES=12
Dim X(NUM_PTS),Y(NUM_PTS),Z(NUM_PTS)
Dim XP(NUM_PTS),YP(NUM_PTS)
Dim LINEA(NUM_LINES),LINEB(NUM_LINES)
Global NUM_PTS,NUM_LINES,DIST#,XCEN,YCEN
Global X(),Y(),Z(),XP(),YP(),LINEA(),LINEB()
_INITIALIZE
Cls 0
Double Buffer
Autoback 0
TRANX=0 : TRANY=0 : TRANZ=0
ROTX=0 : ROTY=0 : ROTZ=0
XSCALE#=1
YSCALE#=1
ZSCALE#=1
Repeat
Add ROTZ,4,0 To 359
Add ROTY,4,0 To 359
Add ROTZ,4,0 To 359
_CALC_IMAGE[ROTX,ROTY,ROTZ,TRANX,TRANY,TRANZ,XSCALE#,YSCALE#,ZSCALE#]
_DRAW_IMAGE[XCEN,YCEN]
Screen Swap
Wait Vbl
Cls 0
Until Mouse Key
End
Procedure _DRAW_IMAGE[X,Y]
For LINE=1 To NUM_LINES
PNT1=LINEA(LINE)
PNT2=LINEB(LINE)
Draw XP(PNT1)+X,YP(PNT1)+Y To XP(PNT2)+X,YP(PNT2)+Y
Next LINE
End Proc
Procedure _CALC_IMAGE[ROTX,ROTY,ROTZ,TRANX,TRANY,TRANZ,XSCALE#,YSCALE#,ZSCALE#]
CX#=Cos(ROTX) : SX#=Sin(ROTX)
CY#=Cos(ROTY) : SY#=Sin(ROTY)
CZ#=Cos(ROTZ) : SZ#=Sin(ROTZ)
For PNT=1 To NUM_PTS
X=X(PNT)*XSCALE#
Y=Y(PNT)*YSCALE#
Z=Z(PNT)*ZSCALE#
X1#=X*CZ#-Y*SZ#
Y1#=X*SZ#+Y*CZ#
Z1#=Z
X2#=X1#*CY#-Z1#*SY#
Y2#=Y1#
Z2#=X1#*SY#+Z1#*CY#
X3#=X2#
Y3#=Y2#*CX#+Z2#*SX#
Z3#=Z2#*CX#-Y2#*SX#
X4#=X3#+TRANX
Y4#=Y3#-TRANY
Z4#=Z3#-TRANZ
DD#=Z4#+DIST#
If DD#=0 Then DD#=1
X#=X4#*(DIST#/DD#)
Y#=Y4#*(DIST#/DD#)
XP(PNT)=X#
YP(PNT)=Y#
Next PNT
End Proc
Procedure _INITIALIZE
For I=1 To NUM_PTS
Read X(I),Y(I),Z(I)
Next I
For I=1 To NUM_LINES
Read LINEA(I),LINEB(I)
Next I
XCEN=160
YCEN=100
DIST#=250
Degree
Data -20,-20,-20
Data 20,-20,-20
Data 20,20,-20
Data -20,20,-20
Data -20,-20,20
Data 20,-20,20
Data 20,20,20
Data -20,20,20
Data 1,2,2,3
Data 3,4,4,1
Data 5,6,6,7
Data 7,8,8,5
Data 1,5,4,8
Data 3,7,2,6
End Proc