hp2pretty-0.8: src/Pattern.hs
module Pattern (patterns, Pattern) where
import Data.Tuple (swap)
type Point = (Double, Double)
type Pattern = [(Point, Point)]
loop :: [Point] -> [(Point, Point)]
loop ps = zip ps (tail (cycle ps))
patterns :: [Pattern]
patterns =
-- short and long dashes in 4 directions
[ [ ((5, 8), (11, 8)) ]
, [ ((3, 8), (13, 8)) ]
, [ ((8, 5), (8, 11)) ]
, [ ((8, 3), (8, 13)) ]
, [ ((5, 5), (11, 11)) ]
, [ ((3, 3), (13, 13)) ]
, [ ((5, 11), (11, 5)) ]
, [ ((3, 13), (13, 3)) ]
-- small and large crosses in 2 directions
, [ ((5, 8), (11, 8)), ((8, 5), (8, 11)) ]
, [ ((3, 8), (13, 8)), ((8, 3), (8, 13)) ]
, [ ((5, 5), (11, 11)), ((5, 11), (11, 5)) ]
, [ ((3, 3), (13, 13)), ((3, 13), (13, 3)) ]
, [ ((3, 8), (13, 8)), ((8, 3), (8, 13)), ((3, 3), (13, 13)), ((3, 13), (13, 3)) ]
, [ ((5, 8), (11, 8)), ((8, 5), (8, 11)), ((5, 5), (11, 11)), ((5, 11), (11, 5)) ]
-- small and large triangles in 4 directions
, loop [ (5, 5), (11, 5), (8, 11) ]
, loop [ (3, 3), (13, 3), (8, 13) ]
, loop [ (5, 11), (11, 11), (8, 5) ]
, loop [ (3, 13), (13, 13), (8, 3) ]
, loop (map swap [ (5, 5), (11, 5), (8, 11) ])
, loop (map swap [ (3, 3), (13, 3), (8, 13) ])
, loop (map swap [ (5, 11), (11, 11), (8, 5) ])
, loop (map swap [ (3, 13), (13, 13), (8, 3) ])
-- small and large squares in 2 directions
, loop [ (5, 5), (11, 5), (11, 11), (5, 11) ]
, loop [ (3, 3), (13, 3), (13, 13), (3, 13) ]
, loop [ (5, 8), (8, 5), (11, 8), (8, 11) ]
, loop [ (3, 8), (8, 3), (13, 8), (8, 13) ]
]