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 nThe 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 npts n = (map (p2 . (,0)) [0..n], map (p2 . (0,)) [0..n])example = pad 1.1 $ d 20 # centerXY `atop` square 50 # fc whitesmokemain = mainWith (example :: Diagram B)