Advertisement
Guest User

Untitled

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