Talk:Bresenham's Line Algorithm

From RogueBasin
Revision as of 05:07, 22 February 2012 by Mikon (talk | contribs) (Created page with "Here's the shorter variant of function '''bla''' in Haskell: <div style="background-color: #EEEEEE; border-style: dotted; padding: 0.3em"> <syntaxhighlight lang="haskell"> impor...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Here's the shorter variant of function bla in Haskell:

import Data.Tuple
bla :: (Int, Int) -> (Int, Int) -> [(Int, Int)]
bla (x0, y0) (x1, y1) =
  let (dx, dy) = (x1 - x0, y1 - y0)
      (q, p, sw) | abs dx > abs dy = (dx, dy, id)
                 | otherwise       = (dy, dx, swap)
      step b (x, y) = (x + signum q, y + signum p * b)
      walk w xy = xy : walk (tail w) (sw . step (head w) . sw $ xy)
  in walk (balancedWord (abs p) (abs q) 0) (x0, y0)