-- demo\rosetta\Bresenham_line.exw (runnable version) global function bresLine(sequence image, integer x0, y0, x1, y1, colour) -- The line algorithm integer dimx = length(image), dimy = length(image[1]), deltaX = abs(x1-x0), deltaY = abs(y1-y0), stepX = iff(x0deltaY,deltaX,-deltaY), prevle lineError = round(lineError/2, 1) while true do if x0>=1 and x0<=dimx and y0>=1 and y0<=dimy then image[x0][y0] = colour end if if x0=x1 and y0=y1 then exit end if prevle = lineError if prevle>-deltaX then lineError -= deltaY x0 += stepX end if if prevle