# Re: [Haskell-cafe] Line drawing algorithm

```CK Kashyap wrote:
```
`Hi All,`
```
```
I am working on a diagraming utility in Haskell. I started with line drawing. I am doing the basic stuff using the y = mx + c formula to draw a line between (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
```