login

<     >

2021-04-10 16:14:26 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

add BitMap:disk()

diff --git a/surf.lua b/surf.lua
index 2ee0d53..f87473b 100644
--- a/surf.lua
+++ b/surf.lua
@@ -100,6 +100,25 @@ function BitMap:line(x0, y0, x1, y1, v)
     end
 end
 
+function BitMap:disk(cx, cy, r, v)
+    local x = r
+    local y = 0
+    local d = 1-x
+    while x >= y do
+        self:hline(cx-x, cy+y, 2*x, v)
+        self:hline(cx-y, cy+x, 2*y, v)
+        self:hline(cx-x, cy-y, 2*x, v)
+        self:hline(cx-y, cy-x, 2*y, v)
+        y = y + 1
+        if d <= 0 then
+            d = d + 2*y + 1
+        else
+            x = x - 1
+            d = d + 2*(y-x) + 1
+        end
+    end
+end
+
 function BitMap:save_pbm(fname)
     local pbm = io.open(fname, "wb")
     pbm:write("P4\n", self.w, " ", self.h, "\n")