home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 058.lha / MathGraphic (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-11-20  |  3KB  |  163 lines

  1.  Mathgraphics:
  2.  GOSUB INITIALIZE
  3.  ' REPEAT UNTIL THE USER PRESSES A KEY.
  4.  WHILE INKEY$=""
  5.  ' MODULE 1: RightOvals
  6.  R1=150
  7.  R2=25
  8.  
  9.  R3=25
  10.  R4=85
  11.  INC=PI/64
  12.  FOR THETA=0 TO 2*TWOPI STEP INC
  13.  
  14.  X1=FNPOLARX(R1,THETA)
  15.  Y1=FNPOLARY(R2,THETA)
  16.  X2=FNPOLARX(R3,THETA+PI)
  17.  Y2=FNPOLARY(R4,THETA+PI)
  18.  LINE(X2,Y2)-(X1,Y1),INT(RND*31)+1
  19.  NEXT
  20.  PAUSE
  21.  ' MODULE 2: SideOvals---
  22.  'SAME THING, ONLY DIFFERENT.
  23.  R1=150
  24.  R2=35
  25.  R3=65
  26.  R4=85
  27.  INC=PI/64
  28.  OFFSET=PI/3
  29.  FOR THETA=0 TO 3*TWOPI STEP INC
  30.  X1=FNPOLARX(R1,THETA)
  31.  Y1=FNPOLARY(R2,THETA)
  32.  X2=FNPOLARX(R3,THETA+OFFSET)
  33.  Y2=FNPOLARY(R4,THETA)
  34.  LINE(X1,Y1)-(X2,Y2),INT(RND*31)+1
  35.  NEXT
  36.  PAUSE
  37.  ' MODULE 3: TWISTEDBAND
  38.  ' YET ANOTHER VARIATION ON THE DOUBLE OVAL THEME.
  39.  R1=150
  40.  R2=35
  41.  R3=65
  42.  R4=85
  43.  INC=PI/64
  44.  OFFSET=PI/3
  45.  FOR THETA=0 TO 3*TWOPI STEP INC
  46.  X1=FNPOLARX(R1,THETA)
  47.  Y1=FNPOLARY(R2,THETA)
  48.  X2=FNPOLARX(R3,THETA)
  49.  Y2=FNPOLARY(R4,THETA+OFFSET)
  50.  LINE(X1,Y1)-(X2,Y2),INT(RND*31)+1
  51.  NEXT
  52.  PAUSE
  53.  'MODULE 4:MULTILOBE
  54.  R1=100
  55.  INC=PI/128
  56.  LOBES=4
  57.  FOR THETA=0 TO 2*TWOPI STEP INC
  58.  R2=R1*SIN(LOBES*THETA)
  59.  X1=FNPOLARX(R2,THETA)
  60.  Y1=FNPOLARY(R2,THETA)
  61.  LINE (XCENTER,YCENTER)-(X1,Y1),INT(RND*31)+1
  62.  NEXT
  63.  PAUSE
  64.  ' MODULE 5: SPIRALCONE
  65.  R1=100
  66.  R2=85
  67.  INC=PI/160
  68.  LOBES=3
  69.  FOR THETA=0 TO 2*TWOPI STEP INC
  70.  X1=FNPOLARX(R1,THETA*LOBES)
  71.  Y1=FNPOLARY(R2,THETA)
  72.  LINE (XCENTER,YCENTER)-(X1,Y1),INT(RND*31)+1
  73.  NEXT
  74.  PAUSE
  75.  ' MODULE 6: SIDESPIRAL CONE
  76.  R1=130
  77.  R2=80
  78.  INC=PI/160
  79.  LOBES=3
  80.  FOR THETA=0 TO 2*TWOPI STEP INC
  81.  X1=FNPOLARX(R1,THETA)
  82.  Y1=FNPOLARY(R2,THETA*LOBES)
  83.  LINE (XCENTER,YCENTER)-(X1,Y1),INT(RND*31)+1
  84.  NEXT
  85.  PAUSE
  86.  ' MODULE 7:CIRCLES
  87.  R1=115
  88.  R2=85
  89.  R3=40
  90.  R4=45
  91.  INC1=PI/3
  92.  INC2=PI/20
  93.  FOR THETA1=0 TO TWOPI STEP INC1
  94.  FOR THETA2=0 TO TWOPI STEP INC2
  95.  
  96.  X1=FNPOLARX(R1,THETA2)
  97.  Y1=FNPOLARY(R2,THETA2)
  98.  X2=FNPOLARX(R3,THETA1)
  99.  Y2=FNPOLARY(R4,THETA1)
  100.  LINE (X1,Y1)-(X2,Y2),INT(RND*31)+1
  101.  NEXT
  102.  NEXT
  103.  PAUSE
  104.  ' MODULE 8: SPIKES
  105.  R1=115
  106.  R2=85
  107.  R3=40
  108.  R4=45
  109.  INC1=PI/3
  110.  INC2=PI/18
  111.  FOR THETA1=0 TO TWOPI STEP INC1
  112.  FOR THETA2=0 TO TWOPI STEP INC2
  113.  
  114.  X1=FNPOLARX(R1,THETA2)
  115.  Y1=FNPOLARY(R2,THETA1)
  116.  X2=FNPOLARX(R3,THETA1)
  117.  Y2=FNPOLARY(R4,THETA2)
  118.  LINE (X1,Y1)-(X2,Y2),INT(RND*31)+1
  119.  NEXT
  120.  NEXT
  121.  PAUSE
  122.  WEND
  123.  ' SHUT EVERYTHING DOWN AND QUIT.
  124.  
  125.  WINDOW CLOSE 2
  126.  
  127.  SCREEN CLOSE 2
  128.  WINDOW OUTPUT 1
  129.  END
  130.  
  131.  SUB PAUSE STATIC
  132.  FOR DELAY=1 TO 5000
  133.  NEXT
  134.  CLS
  135.  END SUB
  136.  
  137.  INITIALIZE:
  138.  ' SET UP A 32 COLOR LOW-RES SCREEN.
  139.  SCREEN 2,320,200,5,1
  140.  WINDOW 2,"AmigaBasic Graphics",(0,0)-(297,185),23,2
  141.  CLS
  142.  ' COLOR 0 (background) is black.
  143.  PALETTE 0,0,0,0
  144.  ' SET UP OTHER 31 COLORS AS RANDOM COMBINATIONS.
  145.  FOR L=1 TO 31
  146.  
  147.  PALETTE L,RND,RND,RND
  148.  NEXT
  149.  ' KEEP THE RANDOM SEQUENCE RANDOM.
  150.  RANDOMIZE TIMER
  151.  ' DEFINE CONSTANTS.
  152.  PI=3.14159
  153.  
  154.  TWOPI=2*PI
  155.  XCENTER=151
  156.  YCENTER=93
  157.  'DEFINE POLAR TO CARTESIAN CONVERSION FUNCTIONS.
  158.  DEF FNPOLARX(R,THETA)=R*COS(THETA)+XCENTER
  159.  DEF FNPOLARY(R,THETA)=R*SIN(THETA)+YCENTER
  160.  RETURN
  161.  
  162.  
  163.