home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d9xx / d969 / ace.lha / ACE / ACE-2.0.lha / PRGS.lha / Fractals / lorenz.b < prev    next >
Text File  |  1994-01-10  |  1KB  |  83 lines

  1. { The Lorenz Attractor }
  2.  
  3. const     xscreen=640,yscreen=400
  4. const     delta=0.01
  5.  
  6. single    x,y,z
  7. single    xf,yf
  8. longint    lt,rt,top,bottom
  9.  
  10. sub draw_universal_line(xw,yw)
  11. shared xf,yf
  12. shared lt,rt,top,bottom
  13.   xs = ((xw*xf-lt) * xscreen / (rt-lt)) + xscreen/2
  14.   ys = (yw*yf-bottom) * yscreen / (top-bottom)
  15.   color int(rnd*2)+1
  16.   line step (xs,ys)
  17. end sub
  18.  
  19. sub universal_x&(xw)
  20. shared xf
  21. shared lt,rt
  22.   universal_x& = ((xw*xf-lt) * xscreen / (rt-lt)) + xscreen/2
  23. end sub
  24.  
  25. sub universal_y&(yw)
  26. shared yf
  27. shared top,bottom
  28.   universal_y& = (yw*yf-bottom) * yscreen / (top-bottom)
  29. end sub
  30.  
  31. sub calc
  32. shared x,y,z
  33.   dx = 10.0*(y-x)
  34.   dy = x*(28.0-z)-y
  35.   dz = x*y - (8.0/3.0)*z
  36.   x = x + delta*dx
  37.   y = y + delta*dy
  38.   z = z + delta*dz
  39. end sub
  40.  
  41. sub LorenzAttractor
  42. shared x,y,z
  43.   x=1 : y=1 : z=1
  44.   calc
  45.   penup
  46.   setxy universal_x&(x),universal_y&(z)
  47.   repeat
  48.     calc
  49.     draw_universal_line(x,z)
  50.   until mouse(0)
  51. end sub
  52.      
  53. { ** main ** }
  54. screen 1,xscreen,yscreen,2,4
  55.  
  56. palette 0,0,0,0        '..black
  57. palette 1,1,1,1        '..white
  58. palette 2,0,1,0        '..green
  59.  
  60. lt=0    '..window dimensions
  61. rt=xscreen
  62. top=0
  63. bottom=yscreen
  64.  
  65. xf=14.0    '..scale up x and y
  66. yf=7.0
  67.  
  68. color 1,0
  69. cls
  70.  
  71. locate 2,50
  72. prints "press left mouse button..."
  73.  
  74. LorenzAttractor
  75.  
  76. color 1,0
  77. locate 2,50
  78. prints "              hit a key..."
  79.  
  80. while inkey$="":wend
  81.  
  82. screen close 1
  83.