<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Hi Everyone,<br>I managed to write up the line drawing function using the following links - <br><span><a target="_blank" href="http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html">http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html</a></span><br><span><a target="_blank" href="http://rosettacode.org/wiki/Bresenham%27s_line_algorithm#Haskell">http://rosettacode.org/wiki/Bresenham%27s_line_algorithm#Haskell</a></span><br><br>line :: Point -> Point -> [Point]<br>line (xa,ya) (xb,yb) = line' (x1,y1) (x2,y2) deltax deltay ystep isSteep 0<br> where <br> isSteep = abs (yb - ya) > abs (xb - xa)<br> (xa',ya',xb',yb') = if isSteep<br> then (ya,xa,yb,xb)<br> else
(xa,ya,xb,yb)<br> (x1,y1,x2,y2) = if xa' > xb'<br> then (xb',yb',xa',ya')<br> else (xa',ya',xb',yb')<br> deltax = x2 - x1<br> deltay = abs (y2 - y1)<br> ystep = if y1 < y2 then 1 else -1<br> <br><br>line' :: Point -> Point -> Integer -> Integer -> Integer -> Bool -> Integer -> [Point]<br>line' (x1,y1) (x2,y2) deltax deltay ystep isSteep error =<br> if x1 == x2<br> then if isSteep then [(y1,x1)] else [(x1,y1)]<br> else<br> if isSteep<br> then [(y1,x1)] ++ line' (newX,newY) (x2,y2) deltax deltay ystep isSteep newError <br> else [(x1,y1)] ++ line' (newX,newY) (x2,y2) deltax deltay ystep isSteep newError<br>
where<br> newX = x1 + 1<br> tempError = error + deltay<br> (newY, newError) = if (2*tempError) >= deltax then (y1+ystep,tempError-deltax) else (y1,tempError)<br><br><br>Can someone please provide feedback on this? In terms of, how do I get more Haskell'ism into it.<br><br>Regards,<br>Kashyap<br></div></div><br>
</body></html>