home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 December / DPPCPRO1205.ISO / Essentials / Programming / Basic4GL / Setup Basic4GL v2.3.1.exe / $INSTDIR / Programs / PB03.gb < prev    next >
Encoding:
Text File  |  2005-07-29  |  2.2 KB  |  116 lines

  1. ' PB03
  2. ' Written by Scott Brosious
  3.  
  4. const Width = 320, Height = 200 
  5. const pixels = 1000 ' Number of pixels
  6. const maxlenght = 20
  7.  
  8. dim X3D(pixels)(2)
  9. dim Y3D(pixels)(2)
  10. dim Z3D#(pixels)(2)
  11.  
  12. dim X2D#(pixels)(2)
  13. dim Y2D#(pixels)(2)
  14.  
  15. dim X,Y,Z
  16.  
  17. dim i,j 
  18.  
  19. dim lenght 
  20.  
  21. dim intensity#
  22.  
  23. ' Initialize
  24. for i = 0 to pixels
  25.  
  26. X = int(rnd() % (width + 1) - (width /2))
  27. Y = int(rnd() % (height + 1) - (height /2)) 
  28. Z = int(rnd() % 200)
  29.  
  30. lenght = int(rnd() % maxlenght) + 1
  31.  
  32. X3D(i)(0) = X
  33. Y3D(i)(0) = Y
  34. Z3D#(i)(0) = Z  + lenght
  35.  
  36. X3D(i)(1) = X
  37. Y3D(i)(1) = Y
  38. Z3D#(i)(1) = Z 
  39.  
  40. next
  41.  
  42. ' Set 2D mode
  43. glMatrixMode (GL_PROJECTION)
  44. glLoadIdentity ()
  45. glOrtho (0, Width, 0, Height, -1, 1)
  46. glMatrixMode (GL_MODELVIEW)
  47. glDisable (GL_DEPTH_TEST)
  48.  
  49. glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)
  50. glEnable (GL_BLEND)
  51.  
  52. glEnable (GL_LINE_SMOOTH)
  53.  
  54. glLineWidth(2)
  55.  
  56. while true
  57.  
  58. ' Clear screen
  59. glClear (GL_COLOR_BUFFER_BIT)
  60.  
  61. ' Plot some pixels
  62. glBegin (GL_LINES)
  63.   
  64.   for i = 0 to pixels
  65.     
  66.     X2D#(i)(0) = ((X3D(i)(0) * 256) / (256 - Z3D#(i)(0))) + (Width / 2)
  67.     Y2D#(i)(0) = (((Height / 2)- Y3D(i)(0) * 256) / (256 - Z3D#(i)(0))) + (Height / 2)
  68.     
  69.     X2D#(i)(1) = ((X3D(i)(1) * 256) / (256 - Z3D#(i)(1))) + (Width / 2)
  70.     Y2D#(i)(1) = (((Height / 2)- Y3D(i)(1) * 256) / (256 - Z3D#(i)(1))) + (Height / 2)
  71.     
  72.     intensity# =   Z3D#(i)(0) / 240      
  73.  
  74.     glColor4f (1, 1, 1 , intensity# )
  75.  
  76.     glVertex2f (X2D#(i)(0), Y2D#(i)(0))
  77.     
  78.     glColor4f (1, 1, 1 , .1)
  79.     
  80.     glVertex2f (X2D#(i)(1), Y2D#(i)(1))
  81.         
  82.   next  
  83.   
  84. glEnd ()
  85.                                               
  86. ' Display output
  87. SwapBuffers ()
  88.  
  89. for i = 0 to pixels
  90.  
  91.   Z3D#(i)(0) = Z3D#(i)(0) + 1 
  92.   Z3D#(i)(1) = Z3D#(i)(1) + 1
  93.  
  94.   if Z3D#(i)(1) > 254 - maxlenght then gosub Refresh endif 
  95.   if Z3D#(i)(1) > 254 - maxlenght then X3D(i)(1) = X3D(i)(0): Y3D(i)(1) = Y3D(i)(0) endif
  96.   if Z3D#(i)(1) > 254 - maxlenght then Z3D#(i)(1) = 0: endif 
  97.       
  98. next
  99.  
  100. wend
  101.  
  102. Refresh:
  103.  
  104. X = int(rnd() % (width + 1) - (width /2))
  105. Y = int(rnd() % (height + 1) - (height /2)) 
  106.  
  107. X3D(i)(0) = X
  108. Y3D(i)(0) = Y
  109.  
  110. lenght = int(rnd() % maxlenght) + 1
  111.  
  112. Z3D#(i)(0) = lenght
  113.  
  114. return
  115.  
  116.