From 13e6c382be348312e345224856655f836c89a886 Mon Sep 17 00:00:00 2001 From: Nyeogmi Date: Sat, 17 Dec 2022 13:30:48 -0800 Subject: [PATCH] My fat bresenham implementation is really slow --- chameleonic.p8 | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/chameleonic.p8 b/chameleonic.p8 index 81e043f..a2219d2 100644 --- a/chameleonic.p8 +++ b/chameleonic.p8 @@ -967,34 +967,27 @@ function rope:_rast( if (y0dy then err=dx/2.0 return function() - if (queue==nil) return - if (x==x1) queue=nil return x1,y1 - if #queue==0 then - add(queue,{x,y}) - err-=dy - if (err<0) y+=sy add(queue,{x,y}) err+=dx - x+=sx - end - return unpack(deli(queue,1)) + if (done) return + if (x==x1) done=true return x1,y1 + local oldx,oldy=x,y + err-=dy + if (err<0) y+=sy err+=dx + x+=sx + return oldx,oldy end else err=dy/2.0 return function() - if (queue==nil) return - if (y==y1) queue=nil return x1,y1 - if #queue==0 then - add(queue,{x,y}) - - local oldx,oldy=x,y - err-=dx - if (err<0) x+=sx add(queue,{x,y}) err+=dy - y+=sy - end - return unpack(deli(queue,1)) + if (done) return + if (y==y1) done=true return x1,y1 + local oldx,oldy=x,y + err-=dx + if (err<0) x+=sx err+=dy + y+=sy + return oldx,oldy end end end