applications.collages.collageAlgebra("Penrose kites & darts 1"):
{
  ntColour = const(.8),
  tileColour1 = const(.6),
  tileColour2 = const(.8),
  alpha = const(36),
  r = const(2/(1 + sqrt(5))),
  rPie = const(1/2 * #r),
  
  kite-outline = { polygon((0, -cos(2 * #alpha)), (sin(2 * #alpha), 0), (0, cos(#alpha) / #r), (-sin(2 * #alpha), 0))},
  kite-background = { filledPolygon((0, -cos(2 * #alpha)), (sin(2 * #alpha), 0), (0, cos(#alpha) / #r), (-sin(2 * #alpha), 0))[#ntColour,#ntColour,#ntColour]},
  kite = { 
      filledPie(0, -cos(2 * #alpha),#rPie,#alpha / 2,4*#alpha)[#tileColour1],
      filledPie(0, cos(#alpha) / #r, #rPie,-3/2 * #alpha, -2 * #alpha)[#tileColour1]
    }
    + #kite-outline,
    
  dart-outline = {polygon((0, 0), (sin(#alpha) / #r, cos(#alpha) / #r), (0, cos(#alpha) / #r - cos(2 * #alpha)), (-sin(#alpha) / #r, cos(#alpha) / #r))},
  dart-background = { filledPolygon((0, 0), (sin(#alpha) / #r, cos(#alpha) / #r), (0, cos(#alpha) / #r - cos(2 * #alpha)), (-sin(#alpha) / #r, cos(#alpha) / #r))[#ntColour,#ntColour,#ntColour]},
  dart = {
      filledPie(-sin(#alpha) / #r, cos(#alpha) / #r, #rPie, -#alpha / 2, -#alpha)[#tileColour1],
      filledPie(sin(#alpha) / #r, cos(#alpha) / #r, #rPie, 180 + #alpha / 2, #alpha)[#tileColour1]
      }
    + #dart-outline,
  
  rk1 = scale(#r) . rotate(180 + #alpha) . translate(0, cos(#alpha) / #r),
  rk2 = translate(sin(2 * #alpha), 0) . scale(#r) . rotate(3 * #alpha) . translate(0, -cos(2 * #alpha)),
  rk3 = translate(-sin(2 * #alpha), 0) . scale(#r) . rotate(-3 * #alpha) . translate(0, -cos(2 * #alpha)),
  refine-kite = <rk1, rk2, rk3>,
  
  invert = translate(0, cos(2 * #alpha)) . rotate(-3 * #alpha) . scale(1/#r) . translate(-sin(2 * #alpha), 0),
  invert = <invert>,
  
  rd1 = translate(0, -cos(#alpha) / #r) . rotate(180) . scale(#r),
  rd2 = scale(#r) . rotate(180 - #alpha) . translate(sin(#alpha) / #r, cos(#alpha) / #r),
  refine-dart = <rd1, rd2>
  
  
}
