home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
grap
/
util
/
021
/
svgamod2.bas
< prev
next >
Wrap
BASIC Source File
|
1993-06-11
|
42KB
|
1,207 lines
REM $INCLUDE: 'SVGAQB10.BI'
REM $INCLUDE: 'SVGADEMO.BI'
REM $DYNAMIC
SUB DO2D (RET$, MAXX, MAXY)
DIM POINTARRY(0 TO 8) AS P2DType
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 11: 2D functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SET UP THE 'STAR' PATTERN OF POINTS
'*************************************************************************
SETVIEW 0, 0, MAXX, MAXY
CNTX = MAXX \ 2
CNTY = ((MAXY - 32) \ 2) + 32
SPCNG = MAXX \ 30
POINTARRY(0).X = 0
POINTARRY(0).Y = -SPCNG * 6
POINTARRY(1).X = SPCNG * 2
POINTARRY(1).Y = -SPCNG * 2
POINTARRY(2).X = SPCNG * 6
POINTARRY(2).Y = 0
POINTARRY(3).X = SPCNG * 2
POINTARRY(3).Y = SPCNG * 2
POINTARRY(4).X = 0
POINTARRY(4).Y = SPCNG * 6
POINTARRY(5).X = -SPCNG * 2
POINTARRY(5).Y = SPCNG * 2
POINTARRY(6).X = -SPCNG * 6
POINTARRY(6).Y = 0
POINTARRY(7).X = -SPCNG * 2
POINTARRY(7).Y = -SPCNG * 2
POINTARRY(8).X = 0
POINTARRY(8).Y = -SPCNG * 6
FOR I = 0 TO 8
PLOTARRY(I).X = POINTARRY(I).X
PLOTARRY(I).Y = POINTARRY(I).Y
NEXT I
'*************************************************************************
'* SHOW D2TRANSLATE
'*************************************************************************
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2TRANSLATE (Points,XTrans,YTrans,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
XTRANS = 0
YTRANS = 0
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS + 2
YTRANS = YTRANS + 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS - 2
YTRANS = YTRANS - 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2SCALE
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2SCALE (Points,XScale,YScale,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 256 TO 380 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 128 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT THE CENTER OF THE OBJECT)
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about the center of the object."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 180
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 180 TO 0 STEP -2
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT AN ARBITRARY POINT)
'*************************************************************************
SETVIEW 0, 0, MAXX, 48
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about an arbitarary point."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 360 STEP 2
D2ROTATE 9, 0, SPCNG * 6, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
SETVIEW 0, 0, MAXX, MAXY
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
EXIT SUB
END IF
END SUB
SUB DO3D (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 12: 3D functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SET UP THE 'HOUSE' PATTERN OF POINTS
'*************************************************************************
SETVIEW 0, 0, MAXX, MAXY
CNTX = MAXX \ 2
CNTY = ((MAXY - 32) \ 2) + 32
CNTZ = 0
SPCNG = MAXX \ 6
POINTARRY3D(0).X = -SPCNG
POINTARRY3D(0).Y = -SPCNG * 2
POINTARRY3D(0).Z = 0
POINTARRY3D(1).X = SPCNG
POINTARRY3D(1).Y = -SPCNG * 2
POINTARRY3D(1).Z = 0
POINTARRY3D(2).X = SPCNG
POINTARRY3D(2).Y = -SPCNG * 2
POINTARRY3D(2).Z = SPCNG * 2
POINTARRY3D(3).X = -SPCNG
POINTARRY3D(3).Y = -SPCNG * 2
POINTARRY3D(3).Z = SPCNG * 2
POINTARRY3D(4).X = -SPCNG
POINTARRY3D(4).Y = SPCNG * 2
POINTARRY3D(4).Z = 0
POINTARRY3D(5).X = SPCNG
POINTARRY3D(5).Y = SPCNG * 2
POINTARRY3D(5).Z = 0
POINTARRY3D(6).X = SPCNG
POINTARRY3D(6).Y = SPCNG * 2
POINTARRY3D(6).Z = SPCNG * 2
POINTARRY3D(7).X = -SPCNG
POINTARRY3D(7).Y = SPCNG * 2
POINTARRY3D(7).Z = SPCNG * 2
POINTARRY3D(8).X = 0
POINTARRY3D(8).Y = -SPCNG * 2
POINTARRY3D(8).Z = SPCNG * 3
POINTARRY3D(9).X = 0
POINTARRY3D(9).Y = SPCNG * 2
POINTARRY3D(9).Z = SPCNG * 3
POINTARRY3D(10).X = 0
POINTARRY3D(10).Z = 0
POINTARRY3D(10).Y = 0
POINTARRY3D(11).X = SPCNG * 4
POINTARRY3D(11).Z = 0
POINTARRY3D(11).Y = 0
POINTARRY3D(12).X = 0
POINTARRY3D(12).Z = 0
POINTARRY3D(12).Y = SPCNG * 4
POINTARRY3D(13).X = 0
POINTARRY3D(13).Z = SPCNG * 4
POINTARRY3D(13).Y = 0
FOR I = 0 TO 13
P