Files
loop/src/Picture/Composite.hs
T

26 lines
690 B
Haskell

module Picture.Composite where
import Picture.Data
import Picture.Base
import Geometry
import Data.Foldable
arrowPath :: [Point2] -> Picture
arrowPath xs = mconcat $ zipWith arrow xs $ tail xs
multiArrow :: Foldable t => Point2 -> Point2 -> Color -> t Color -> Picture
multiArrow sp ep col' cols
| null cols = color col' (arrow sp ep)
| otherwise = foldl' f mempty cols
where
f pic col = uncurryV translate offset pic <> color col (arrow sp ep)
offset = normalizeV (vNormal (ep -.- sp))
arrow :: Point2 -> Point2 -> Picture
arrow a b = line [a,b]
<> line [b +.+ n -.- v,b]
<> line [b -.- n -.- v,b]
where
v = 5 *.* normalizeV (b -.- a)
n = vNormal v