Advertisement
Guest User

Untitled

a guest
Nov 30th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 1.53 KB | None | 0 0
  1. DIM SHARED sizeX AS INTEGER, sizeY AS INTEGER
  2.  
  3. sizeX = 400
  4. sizeY = 400
  5.  
  6. DIM SHARED cell(sizeX, sizeY) AS _UNSIGNED _BIT, origoX AS INTEGER, origoY AS INTEGER
  7.  
  8. origoX = sizeX / 2
  9. origoY = sizeY / 2
  10.  
  11. cellCircle origoX, origoY, 1000
  12.  
  13. END
  14.  
  15.  
  16.  
  17.  
  18. SUB cellCircle (sx AS INTEGER, sy AS INTEGER, maxDistance AS INTEGER)
  19. DIM x AS INTEGER, y AS INTEGER, flag AS _UNSIGNED _BIT
  20.  
  21. ' fill 1/8 sector and mirror it to fill the rest of the circle
  22. y = 0
  23. DO
  24.     flag = 0
  25.  
  26.     FOR x = 1 TO y
  27.         IF calculateDistance(sx, sy, sx + x, sy + y) <= maxDistance THEN
  28.             cell(sx + x, sy + y) = 1 ' 1/8
  29.             cell(sx + y, sy + x) = 1 ' 2/8
  30.             cell(sx + y, sy - x) = 1 ' 3/8
  31.             cell(sx + x, sy - y) = 1 ' 4/8
  32.             cell(sx - x, sy - y) = 1 ' 5/8
  33.             cell(sx - y, sy - x) = 1 ' 6/8
  34.             cell(sx - y, sy + x) = 1 ' 7/8
  35.             cell(sx - x, sy + y) = 1 ' 8/8
  36.  
  37.             flag = 1
  38.         END IF
  39.     NEXT x
  40.  
  41.     IF flag = 0 AND x > 1 THEN EXIT DO
  42.     y = y + 1
  43. LOOP
  44.  
  45. ' fill axes along origo
  46. x = 1
  47. y = 0
  48. DO
  49.     IF calculateDistance(sx, sy, sx + x, sy) <= maxDistance THEN
  50.         cell(sx + x, sy) = 1
  51.         cell(sx, sy + x) = 1
  52.         cell(sx, sy - x) = 1
  53.         cell(sx - x, sy) = 1
  54.     ELSE
  55.         EXIT DO
  56.     END IF
  57.     x = x + 1
  58. LOOP
  59.  
  60. ' lastly, fill the origo
  61. cell(sx, sy) = 1
  62.  
  63. END SUB
  64.  
  65.  
  66.  
  67. FUNCTION calculateDistance% (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)
  68. calculateDistance% = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)
  69. END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement