Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DIM SHARED sizeX AS INTEGER, sizeY AS INTEGER
- sizeX = 400
- sizeY = 400
- DIM SHARED cell(sizeX, sizeY) AS _UNSIGNED _BIT, origoX AS INTEGER, origoY AS INTEGER
- origoX = sizeX / 2
- origoY = sizeY / 2
- cellCircle origoX, origoY, 1000
- END
- SUB cellCircle (sx AS INTEGER, sy AS INTEGER, maxDistance AS INTEGER)
- DIM x AS INTEGER, y AS INTEGER, flag AS _UNSIGNED _BIT
- ' fill 1/8 sector and mirror it to fill the rest of the circle
- y = 0
- DO
- flag = 0
- FOR x = 1 TO y
- IF calculateDistance(sx, sy, sx + x, sy + y) <= maxDistance THEN
- cell(sx + x, sy + y) = 1 ' 1/8
- cell(sx + y, sy + x) = 1 ' 2/8
- cell(sx + y, sy - x) = 1 ' 3/8
- cell(sx + x, sy - y) = 1 ' 4/8
- cell(sx - x, sy - y) = 1 ' 5/8
- cell(sx - y, sy - x) = 1 ' 6/8
- cell(sx - y, sy + x) = 1 ' 7/8
- cell(sx - x, sy + y) = 1 ' 8/8
- flag = 1
- END IF
- NEXT x
- IF flag = 0 AND x > 1 THEN EXIT DO
- y = y + 1
- LOOP
- ' fill axes along origo
- x = 1
- y = 0
- DO
- IF calculateDistance(sx, sy, sx + x, sy) <= maxDistance THEN
- cell(sx + x, sy) = 1
- cell(sx, sy + x) = 1
- cell(sx, sy - x) = 1
- cell(sx - x, sy) = 1
- ELSE
- EXIT DO
- END IF
- x = x + 1
- LOOP
- ' lastly, fill the origo
- cell(sx, sy) = 1
- END SUB
- FUNCTION calculateDistance% (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)
- calculateDistance% = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)
- END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement