home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
351-375
/
apd375
/
progs
/
vectors.amos
/
vectors.amosSourceCode
Wrap
AMOS Source Code
|
1991-07-30
|
8KB
|
295 lines
'===================================================================
'
'DATE: 29/01/92
'TIME: 22:12
'NAME: VECTORS.AMOS
'CODE: UNCLE SIMES
'NOTE: THE 3D CODE IS A CHANGED (AND HOPEFULLY IMPROVED VERSION) OF
' THAT WHICH APPEARED IN VOL 1 ISSUE 2 OF ALL ABOUT AMOS AND
' WAS ORIGINALLY WRITTEN BY RICHARD GALE.
'
'===================================================================
'
'THOUGHT FOR THE DAY: Neurotics Build Castles In The Air........
' Psycotics Live In Castles In The Air......
' Psychiatrists...They Charge Rent.
'
'
' Plonk! I'm back... I'm very busy at the moment and as a result I
' haven't bothered to comment this. I am however currently writing what
' I hope will turn out to be a usefull set of notes on 3D GFX etc for
' your entertainment, they should be ready for the May TOTALLY AMOS disk, but if you
' can't wait that long then either go down the library or get a subscription
' to ALL ABOUT AMOS from........
'
'
' Peter Hickman "All About Amos",
' 36 Cleverly Estate,
' Wormholt Road,
' London.
' W12 0LX
'
' TEL: 081 749 6086 - Office Hours Only
'
'
' 2 Books On Computer Graphics That I Would Recomend Are:
'
'
' 1] Computer Graphics - Principles And Practice by:
'
' James Foley - The George Washingthon University
' Andres Van Dam - Brown University
' Steven Feiner - Columbia University
' John Hughes - Brown University
'
' Published by: Addison-Wesley
'
' ISBN 0-201-12110-7
'
'
' 2] Fundamentals Of Three-Dimentional Computer Graphics by:
'
' Alan Watt - University Of Sheffield
'
' Published by: Addison-Wesley
'
' ISBN 0-201-15442-0
'
'
' BOTH THESE BOOKS ARE EXCELLENT BUT WILL SERIOUSLY DAMAGE YOUR BANK ACCOUNT!
'
'
'
' STOP PRESS! STOP PRESS! SKIDz he who is ravi'n mad has just signed an
' agreement (in blood) to provide some examples and a set of docs on how to
' use AMOS 3D so if you are having problems with that then get a copy of the
' May disk and all will be revealed.
'
'
' What am I doing.... well I have a few things under development at
' the moment like, vu meters (special ones), the runner (wait & see), menus,
' vector balls. However this is your magazine and what you want is what counts
' so write to Len & Anne and have your say. 'Nough said.
'
' My Address: Uncle Simes
' The Warehouse,
' 118 Hiltingbury Rd,
' Chandlers Ford,
' Eastleigh,
' Hants.
' SO5 1NT.
'
' * PLEASE INCLUDE RETURN POSTAGE IF YOU WANT A REPLY! *
'
'
'===================================================================
' * DATA SECTION (YEUCH BOLOC! (anag)) VARIABLES ETC *
'===================================================================
'
'
Dir$="SIMES_PROGS1:"
Close Workbench
Close Editor
Screen Close 0
'
NUM_OF_POINTS=5
NUM_OF_LINES=5
CENTER_X=160
CENTER_Y=90
DISTANCE#=150
TRANS_X=0 : TRANS_Y=0 : TRANS_Z=0
ROTATE_X=0 : ROTATE_Y=0 : ROTATE_Z=0
SCALE_X#=1 : SCALE_Y#=1 : SCALE_Z#=1
'
Dim IMAGE_X(NUM_OF_POINTS),IMAGE_Y(NUM_OF_POINTS),IMAGE_Z(NUM_OF_POINTS)
Dim PNT_X(NUM_OF_POINTS),PNT_Y(NUM_OF_POINTS)
Dim LINE_A(NUM_OF_LINES),LINE_B(NUM_OF_LINES)
'
Global NUM_OF_POINTS,NUM_OF_LINES,DISTANCE#,CENTER_X,CENTER_Y
Global IMAGE_X(),IMAGE_Y(),IMAGE_Z()
Global PNT_X(),PNT_Y()
Global LINE_A(),LINE_B()
'
'===================================================================
' * MODULE LEVEL CODE *
'===================================================================
'
INITIALISE
MAIN
End
'
'===================================================================
' * PROCEDURE LEVEL CODE *
'===================================================================
'
Procedure MAIN
Shared ROTATE_X,ROTATE_Y,ROTATE_Z,TRANS_X,TRANS_Y,TRANS_Z,SCALE_X#,SCALE_Y#,SCALE_Z#
Screen Show 0
Repeat
Add ROTATE_X,4,0 To 359
Add ROTATE_Y,8,0 To 359
Add ROTATE_Z,-12,0 To 359
IMAGE_CALC[ROTATE_X,ROTATE_Y,ROTATE_Z,TRANS_X,TRANS_Y,TRANS_Z,SCALE_X#,SCALE_Y#,SCALE_Z#]
IMAGE_DRAW[CENTER_X,CENTER_Y]
Screen Swap
Wait Vbl
Cls 0
Until Mouse Key=1
Rainbow Del
Bob Off
Screen Close 0
Erase 1
MUZAK_DOWN
End Proc
'
Procedure INITIALISE
MUZAK_UP["MUSIC/TOXIC_MUZAK.ABK",18]
Degree
Screen Open 0,320,180,4,0
Screen Hide 0
Screen Display 0,128,100,320,180
SET_SCREEN
Palette $0,$FFF,$0,$0
Double Buffer
Screen Swap
FLOOR_RBOW
Autoback 0
For LOP=1 To NUM_OF_POINTS
Read IMAGE_X(LOP),IMAGE_Y(LOP),IMAGE_Z(LOP)
Next LOP
For LOP=1 To NUM_OF_LINES
Read LINE_A(LOP),LINE_B(LOP)
Next LOP
'
' Point Data
'
Data -40,-40,20
Data 40,-40,20
Data 40,40,-20
Data -40,40,-20
Data 0,0,0
'
' Line Data
'
Data 1,2,2,3
Data 3,4,4,1
Data 5,5
End Proc
'
Procedure IMAGE_CALC[ROTATE_X,ROTATE_Y,ROTATE_Z,TRANS_X,TRANS_Y,TRANS_Z,SCALE_X#,SCALE_Y#,SCALE_Z#]
_SINE_X#=Sin(ROTATE_X)
_SINE_Y#=Sin(ROTATE_Y)
_SINE_Z#=Sin(ROTATE_Z)
CO_SINE_X#=Cos(ROTATE_X)
CO_SINE_Y#=Cos(ROTATE_Y)
CO_SINE_Z#=Cos(ROTATE_Z)
'
For _POINTS=1 To NUM_OF_POINTS
'
XPOS=IMAGE_X(_POINTS)*SCALE_X#
YPOS=IMAGE_Y(_POINTS)*SCALE_Y#
ZPOS=IMAGE_Z(_POINTS)*SCALE_Z#
'
XPOS1#=XPOS*CO_SINE_Z#-YPOS*_SINE_Z#
YPOS1#=XPOS*_SINE_Z#+YPOS*CO_SINE_Z#
ZPOS1#=ZPOS
'
XPOS2#=XPOS1#*CO_SINE_Y#-ZPOS1#*_SINE_Y#
YPOS2#=YPOS1#
ZPOS2#=XPOS1#*_SINE_Y#+ZPOS1#*CO_SINE_Y#
'
XPOS3#=XPOS2#
YPOS3#=YPOS2#*CO_SINE_X#+ZPOS2#*_SINE_X#
XPOS3#=ZPOS2#*CO_SINE_X#-YPOS2#*_SINE_X#
'
XPOS4#=XPOS3#+TRANS_X
YPOS4#=YPOS3#-TRANS_Y
ZPOS4#=ZPOS4#-TRANS_Z
'
PERSPECTIVE#=ZPOS4#+DISTANCE#
If PERSPECTIVE#=0 Then PERSPECTIVE#=1
XPOS#=XPOS4#*(DISTANCE#/PERSPECTIVE#)
YPOS#=YPOS4#*(DISTANCE#/PERSPECTIVE#)
'
PNT_X(_POINTS)=XPOS#
PNT_Y(_POINTS)=YPOS#
Next _POINTS
End Proc
'
Procedure IMAGE_DRAW[CENT_X,CENT_Y]
Ink 1
For LINES=1 To NUM_OF_LINES-1
PNT_A=LINE_A(LINES)
PNT_B=LINE_B(LINES)
Draw PNT_X(PNT_A)+CENT_X,PNT_Y(PNT_A)+CENT_Y To PNT_X(PNT_B)+CENT_X,PNT_Y(PNT_B)+CENT_Y
Next LINES
Ink 2
PNT_A=LINE_A(5)
PNT_B=LINE_B(5)
Paint PNT_X(PNT_A)+CENT_X,PNT_Y(PNT_A)+CENT_Y
End Proc
'
Procedure SET_SCREEN
Flash Off
Curs Off
Hide On
Cls 0
End Proc
'
Procedure MUZAK_UP[NAME$,TMPO]
Load Dir$+NAME$
Wait 1
Mvolume 0
Music 1
Led Off
Tempo TMPO
For VOL=0 To 63
Wait 6
Mvolume VOL
Next VOL
End Proc
'
Procedure MUZAK_DOWN
For M=63 To 0 Step -1
Wait 5
Mvolume M
Next M
Music Off
Erase 3
End Proc
'
Procedure FLOOR_RBOW
Set Rainbow 0,2,180,"","",""
Rainbow 0,0,115,180
Colour Back 0
Restore RDATA
For C=0 To 179
Read CVA
Rain(0,C)=CVA
Next C
View
RDATA:
Data $0,$0,$0,$0,$0,$0,$0,$0
Data $0,$0,$0,$0,$0,$0,$D5F,$D5F
Data $D5F,$D5F,$C5F,$C5F,$C5F,$C5F,$B5F,$B5F
Data $B5F,$B5F,$A5F,$A5F,$A5F,$A5F,$95F,$95F
Data $95F,$95F,$85F,$85F,$85F,$85F,$75F,$75F
Data $75F,$75F,$65F,$65F,$65F,$66F,$66F,$66F
Data $67F,$67F,$67F,$68F,$68F,$68F,$69F,$69F
Data $69F,$6AF,$6AF,$6AF,$6BF,$6BF,$6BF,$6CF
Data $6CF,$6CF,$6DF,$6DF,$6DF,$6EF,$6EF,$6EF
Data $6FF,$6FF,$6FF,$6DF,$6DF,$6DF,$6CF,$6CF
Data $6CF,$6BF,$6BF,$6BF,$6AF,$6AF,$69F,$69F
Data $69F,$68F,$68F,$68F,$67F,$67F,$67F,$66F
Data $66F,$66F,$65F,$65F,$65F,$64F,$64F,$64F
Data $63F,$63F,$63F,$73F,$73F,$73F,$83F,$83F
Data $83F,$93F,$93F,$93F,$A3F,$A3F,$A3F,$B3F
Data $B3F,$C3F,$C3F,$C3F,$C3F,$D3F,$D3F,$D3F
Data $E3F,$E3F,$E3F,$F3F,$F3F,$F3F,$F5F,$F5F
Data $F5F,$F6F,$F6F,$F6F,$F7F,$F7F,$F7F,$F8F
Data $F8F,$F8F,$F9F,$F9F,$F9F,$FAF,$FAF,$FAF
Data $FBF,$FBF,$FBF,$FCF,$FCF,$FCF,$FDF,$FDF
Data $FDF,$FDF,$FDF,$FDF,$FDF,$FCF,$FCF,$FCF
Data $FBF,$FBF,$FBF,$FAF,$FAF,$FAF,$F9F,$F9F
Data $F9F,$F8F,$F8F,$F8F,$F7F,$F7F,$F7F,$F6F
End Proc