Star construction using straight lines.
> import Diagrams.Backend.SVG.CmdLine
> {-# LANGUAGE NoMonomorphismRestriction, TupleSections #-}
> import Diagrams.Prelude hiding (connect)
> import Data.Colour.SRGB (sRGB24read)
> colors = map sRGB24read ["#5E0042", "#00856A"]
To create one quarter of the diagram, we connect the corresponding points with headless arrows and alternate the line colors.
> quarter n = mconcat [arrowBetween'
> (with & arrowHead .~ noHead
> & shaftStyle %~ lw thin . lc (colors !! ((xCoord1 p) `mod` 2)))
> (fst p) (snd p) | p <- ps]
> where
> xCoord1 = round . fst . unp2 . fst
> ps = zip xs (reverse ys)
> (xs, ys) = pts n
The final diagram is created by assembling four copies of the above.
> d n = half === rotateBy (1/2) half
> where
> half = (rotateBy (1/4) q ||| q) # centerX
> q = quarter n
> pts n = (map (p2 . (,0)) [0..n], map (p2 . (0,)) [0..n])
> example = pad 1.1 $ d 20 # centerXY `atop` square 50 # fc whitesmoke
> main = mainWith (example :: Diagram B)