CK Kashyap wrote:

Hi All,I am working on a diagraming utility in Haskell. I started with linedrawing.I am doing the basic stuff using the y = mx + c formula to draw a linebetween (x1,y1) and (x2,y2)

Hi,

`Are you doing this to learn Haskell, learn about drawing lines, or to`

`just get it implemented? If either of the latter two, when drawing a`

`straight line you shouldn't need to do floating point operations such as`

`this:`

newY = y1 + round (slope * (fromIntegral (newX - x1)))

`Bresenham's algorithm (or similar variants) allows you to draw a line`

`without needing floating point. A Haskell implementation is here:`

http://rosettacode.org/wiki/Bresenham%27s_line_algorithm#Haskell

`Although it may not be too understandable! Wikipedia has an explanation`

`of the general algorithm:`

http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm

`As to how to cope with the dy > dx case in your code given the dx > dy`

`case, you could just swap the x and y coords at the start, then swap`

`back the x and y coords of all the output points afterwards. Odd, but`

`effective :-)`

Thanks, Neil. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe