home *** CD-ROM | disk | FTP | other *** search
/ Best Objectech Shareware Selections / UNTITLED.iso / boss / grap / util / 021 / svgamod2.bas < prev    next >
BASIC Source File  |  1993-06-11  |  42KB  |  1,207 lines

  1.   
  2.     REM $INCLUDE: 'SVGAQB10.BI'
  3.     REM $INCLUDE: 'SVGADEMO.BI'
  4.  
  5. REM $DYNAMIC
  6.     SUB DO2D (RET$, MAXX, MAXY)
  7.  
  8.    
  9.     DIM POINTARRY(0 TO 8) AS P2DType
  10.    
  11.     '*************************************************************************
  12.     '* SET UP THE TITLE
  13.     '*************************************************************************
  14.     TITLE$ = "DEMO 11: 2D functions"
  15.     PALSET PAL, 0, 255
  16.    
  17.     '*************************************************************************
  18.     '* SET UP THE 'STAR' PATTERN OF POINTS
  19.     '*************************************************************************
  20.     SETVIEW 0, 0, MAXX, MAXY
  21.     CNTX = MAXX \ 2
  22.     CNTY = ((MAXY - 32) \ 2) + 32
  23.     SPCNG = MAXX \ 30
  24.     POINTARRY(0).X = 0
  25.     POINTARRY(0).Y = -SPCNG * 6
  26.     POINTARRY(1).X = SPCNG * 2
  27.     POINTARRY(1).Y = -SPCNG * 2
  28.     POINTARRY(2).X = SPCNG * 6
  29.     POINTARRY(2).Y = 0
  30.     POINTARRY(3).X = SPCNG * 2
  31.     POINTARRY(3).Y = SPCNG * 2
  32.     POINTARRY(4).X = 0
  33.     POINTARRY(4).Y = SPCNG * 6
  34.     POINTARRY(5).X = -SPCNG * 2
  35.     POINTARRY(5).Y = SPCNG * 2
  36.     POINTARRY(6).X = -SPCNG * 6
  37.     POINTARRY(6).Y = 0
  38.     POINTARRY(7).X = -SPCNG * 2
  39.     POINTARRY(7).Y = -SPCNG * 2
  40.     POINTARRY(8).X = 0
  41.     POINTARRY(8).Y = -SPCNG * 6
  42.     FOR I = 0 TO 8
  43.         PLOTARRY(I).X = POINTARRY(I).X
  44.         PLOTARRY(I).Y = POINTARRY(I).Y
  45.     NEXT I
  46.    
  47.     '*************************************************************************
  48.     '* SHOW D2TRANSLATE
  49.     '*************************************************************************
  50.     FILLSCREEN (0)
  51.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  52.     A$ = "D2TRANSLATE (Points,XTrans,YTrans,InAry,OutAry)"
  53.     DRWSTRING 1, 7, 0, A$, 10, 16
  54.     SETVIEW 0, 32, MAXX, MAXY
  55.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  56.     SHOWSTAR
  57.     GETKEY RET$
  58.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  59.         FILLSCREEN (0)
  60.         SETVIEW 0, 0, MAXX, MAXY
  61.         EXIT SUB
  62.     END IF
  63.     XTRANS = 0
  64.     YTRANS = 0
  65.     FOR J = 0 TO SPCNG * 2
  66.         XTRANS = XTRANS + 2
  67.         YTRANS = YTRANS + 2
  68.         D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
  69.         SHOWSTAR
  70.         SDELAY 2
  71.     NEXT J
  72.     FOR J = 0 TO SPCNG * 2
  73.         XTRANS = XTRANS - 2
  74.         YTRANS = YTRANS - 2
  75.         D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
  76.         SHOWSTAR
  77.         SDELAY 2
  78.     NEXT J
  79.     GETKEY RET$
  80.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  81.         FILLSCREEN (0)
  82.         SETVIEW 0, 0, MAXX, MAXY
  83.         EXIT SUB
  84.     END IF
  85.    
  86.     '*************************************************************************
  87.     '* SHOW D2SCALE
  88.     '*************************************************************************
  89.     SETVIEW 0, 0, MAXX, 31
  90.     FILLVIEW (0)
  91.     SETVIEW 0, 0, MAXX, MAXY
  92.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  93.     A$ = "D2SCALE (Points,XScale,YScale,InAry,OutAry)"
  94.     DRWSTRING 1, 7, 0, A$, 10, 16
  95.     SETVIEW 0, 32, MAXX, MAXY
  96.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  97.     SHOWSTAR
  98.     FOR J = 256 TO 380 STEP 4
  99.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  100.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  101.         SHOWSTAR
  102.         SDELAY 2
  103.         NEXT J
  104.     X = J
  105.     FOR J = X TO 256 STEP -4
  106.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  107.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  108.         SHOWSTAR
  109.         SDELAY 2
  110.     NEXT J
  111.     X = J
  112.     FOR J = X TO 128 STEP -4
  113.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  114.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  115.         SHOWSTAR
  116.         SDELAY 2
  117.     NEXT J
  118.     X = J
  119.     FOR J = X TO 256 STEP 4
  120.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  121.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  122.         SHOWSTAR
  123.         SDELAY 2
  124.     NEXT J
  125.     GETKEY RET$
  126.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  127.         FILLSCREEN (0)
  128.         SETVIEW 0, 0, MAXX, MAXY
  129.         EXIT SUB
  130.     END IF
  131.    
  132.     '*************************************************************************
  133.     '* SHOW D2ROTATE (ABOUT THE CENTER OF THE OBJECT)
  134.     '*************************************************************************
  135.     SETVIEW 0, 0, MAXX, 31
  136.     FILLVIEW (0)
  137.     SETVIEW 0, 0, MAXX, MAXY
  138.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  139.     A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
  140.     DRWSTRING 1, 7, 0, A$, 10, 16
  141.     A$ = "Lets do it about the center of the object."
  142.     DRWSTRING 1, 7, 0, A$, 10, 32
  143.     SETVIEW 0, 32, MAXX, MAXY
  144.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  145.     SHOWSTAR
  146.     FOR J = 0 TO 180
  147.         D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
  148.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  149.         SHOWSTAR
  150.         SDELAY 2
  151.     NEXT J
  152.     FOR J = 180 TO 0 STEP -2
  153.         D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
  154.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  155.         SHOWSTAR
  156.         SDELAY 2
  157.     NEXT J
  158.     GETKEY RET$
  159.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  160.         FILLSCREEN (0)
  161.         SETVIEW 0, 0, MAXX, MAXY
  162.         EXIT SUB
  163.     END IF
  164.  
  165.     '*************************************************************************
  166.     '* SHOW D2ROTATE (ABOUT AN ARBITRARY POINT)
  167.     '*************************************************************************
  168.     SETVIEW 0, 0, MAXX, 48
  169.     FILLVIEW (0)
  170.     SETVIEW 0, 0, MAXX, MAXY
  171.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  172.     A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
  173.     DRWSTRING 1, 7, 0, A$, 10, 16
  174.     A$ = "Lets do it about an arbitarary point."
  175.     DRWSTRING 1, 7, 0, A$, 10, 32
  176.     SETVIEW 0, 32, MAXX, MAXY
  177.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  178.     SHOWSTAR
  179.     FOR J = 0 TO 360 STEP 2
  180.         D2ROTATE 9, 0, SPCNG * 6, J, POINTARRY(0).X, PLOTARRY(0).X
  181.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  182.         SHOWSTAR
  183.         SDELAY 2
  184.     NEXT J
  185.     SETVIEW 0, 0, MAXX, MAXY
  186.     GETKEY RET$
  187.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  188.         FILLSCREEN (0)
  189.         EXIT SUB
  190.     END IF
  191.  
  192.     END SUB
  193.  
  194.     SUB DO3D (RET$, MAXX, MAXY)
  195.  
  196.    
  197.  
  198.  
  199.     '*************************************************************************
  200.     '* SET UP THE TITLE
  201.     '*************************************************************************
  202.     TITLE$ = "DEMO 12: 3D functions"
  203.     PALSET PAL, 0, 255
  204.    
  205.     '*************************************************************************
  206.     '* SET UP THE 'HOUSE' PATTERN OF POINTS
  207.     '*************************************************************************
  208.     SETVIEW 0, 0, MAXX, MAXY
  209.     CNTX = MAXX \ 2
  210.     CNTY = ((MAXY - 32) \ 2) + 32
  211.     CNTZ = 0
  212.     SPCNG = MAXX \ 6
  213.     POINTARRY3D(0).X = -SPCNG
  214.     POINTARRY3D(0).Y = -SPCNG * 2
  215.     POINTARRY3D(0).Z = 0
  216.     POINTARRY3D(1).X = SPCNG
  217.     POINTARRY3D(1).Y = -SPCNG * 2
  218.     POINTARRY3D(1).Z = 0
  219.     POINTARRY3D(2).X = SPCNG
  220.     POINTARRY3D(2).Y = -SPCNG * 2
  221.     POINTARRY3D(2).Z = SPCNG * 2
  222.     POINTARRY3D(3).X = -SPCNG
  223.     POINTARRY3D(3).Y = -SPCNG * 2
  224.     POINTARRY3D(3).Z = SPCNG * 2
  225.     POINTARRY3D(4).X = -SPCNG
  226.     POINTARRY3D(4).Y = SPCNG * 2
  227.     POINTARRY3D(4).Z = 0
  228.     POINTARRY3D(5).X = SPCNG
  229.     POINTARRY3D(5).Y = SPCNG * 2
  230.     POINTARRY3D(5).Z = 0
  231.     POINTARRY3D(6).X = SPCNG
  232.     POINTARRY3D(6).Y = SPCNG * 2
  233.     POINTARRY3D(6).Z = SPCNG * 2
  234.     POINTARRY3D(7).X = -SPCNG
  235.     POINTARRY3D(7).Y = SPCNG * 2
  236.     POINTARRY3D(7).Z = SPCNG * 2
  237.     POINTARRY3D(8).X = 0
  238.     POINTARRY3D(8).Y = -SPCNG * 2
  239.     POINTARRY3D(8).Z = SPCNG * 3
  240.     POINTARRY3D(9).X = 0
  241.     POINTARRY3D(9).Y = SPCNG * 2
  242.     POINTARRY3D(9).Z = SPCNG * 3
  243.     POINTARRY3D(10).X = 0
  244.     POINTARRY3D(10).Z = 0
  245.     POINTARRY3D(10).Y = 0
  246.     POINTARRY3D(11).X = SPCNG * 4
  247.     POINTARRY3D(11).Z = 0
  248.     POINTARRY3D(11).Y = 0
  249.     POINTARRY3D(12).X = 0
  250.     POINTARRY3D(12).Z = 0
  251.     POINTARRY3D(12).Y = SPCNG * 4
  252.     POINTARRY3D(13).X = 0
  253.     POINTARRY3D(13).Z = SPCNG * 4
  254.     POINTARRY3D(13).Y = 0
  255.     FOR I = 0 TO 13
  256.         P