applications.collages.collageAlgebra("coloured tiles"):
{
  ntColour = const(.8),
  l = const(1/(2 * tan(36))),
  r = const(4/((1 + sqrt(5)) * (1 + sqrt(5)))),
  
  pentagram = { filledPolygon(
    (0.309, 0.425), (0.0, 1.376), (-0.309, 0.425), (-1.309, 0.425), (-0.5, -0.162),
    (-0.809, -1.114), (0.0, -0.526), (0.809, -1.114), (0.5, -0.162), (1.309, 0.425))[.9,.2,.2]
    },
    
  torso = { filledPolygon(
    (0.309, 0.425), (0.0, 1.376), (-0.309, 0.425), (-1.309, 0.425),
    (-0.5, -0.162), (0.5, -0.162), (1.309, 0.425))[.95,.6,0]    },
    
  rhomb = { filledPolygon(
    (0.0, 0.951), (-0.309, 0.0), (0.0, -0.951), (0.309, 0.0))[.8,.8,0]    },
  
  pentagon1 = { filledPolygon(
    (0.5, -0.688), (0.809, 0.263), (0.0, 0.851), (-0.809, 0.263), (-0.5, -0.688))[.6,.6,1] },
  
  pentagon2 = { filledPolygon(
    (0.5, -0.688), (0.809, 0.263), (0.0, 0.851), (-0.809, 0.263), (-0.5, -0.688))[0,.6,.3] },
  
  pentagon3 = { filledPolygon(
    (0.5, -0.688), (0.809, 0.263), (0.0, 0.851), (-0.809, 0.263), (-0.5, -0.688))[0,0,.6] },
    
  rp1 = scale(#r) . rotate(36),
  rp2 = rotate(180) . translate(0, 2 * #l) . scale(#r),
  rp3 = use(rp2) . rotate(72),
  rp4 = use(rp2) . rotate(2 * 72),
  rp5 = use(rp2) . rotate(3 * 72),
  rp6 = use(rp2) . rotate(4 * 72),
  rp7 = translate(0, 2 * (sin(18) / sin(36) + cos(54))) . scale(#r),
  rp8 = use(rp7) . rotate(72),
  rp9 = use(rp7) . rotate(2 * 72),
  rp10 = use(rp7) . rotate(3 * 72),
  rp11 = use(rp7) . rotate(4 * 72),
  refine-pentagram = < rp1, rp2, rp3, rp4, rp5, rp6, rp7, rp8, rp9, rp10, rp11 >,
    
  refine-torso = < rp1, rp2, rp3, rp6, rp7, rp8, rp11 >,
  
  rr1 = translate(0,-sin(18) / (2 * sin(36))) . scale(#r),
  rr2 = translate(0, sin(18) / sin(36) + cos(54)) . scale(#r),
  rr3 = rotate(180) . translate(0, -(sin(18) / sin(36) + cos(54))) . scale(#r),
  refine-rhomb = < rr1, rr2, rr3 >,
    
  rp1-1 = scale(#r) . rotate(36),
  rp1-2 = translate(0,2 * #l) . scale(#r),
  rp1-3 = use(rp1-2) . rotate(72),
  rp1-4 = use(rp1-2) . rotate(2 * 72),
  rp1-5 = use(rp1-2) . rotate(3 * 72),
  rp1-6 = use(rp1-2) . rotate(4 * 72),
  refine-pentagon1 = < rp1-1, rp1-2, rp1-3, rp1-4, rp1-5, rp1-6 >,
  
  rp2-4 = rotate(-72) . use(rp1-4),
  rp2-5 = rotate(72) . use(rp1-5),
  rp2-7 = scale(#r) . translate(0,-#l),
  refine-pentagon2 = < rp1-1, rp1-2, rp1-3, rp2-4, rp2-5, rp1-6, rp2-7 >,
  
  rp3-3 = rotate(-72) . use(rp1-3),
  rp3-4 = rotate(72) . use(rp1-4),
  rp3-5 = rotate(-72) . use(rp1-5),
  rp3-6 = rotate(72) . use(rp1-6),
  rp3-7 = scale(#r) . translate(0,-#l) . rotate(72),
  rp3-8 = scale(#r) . translate(0,-#l) . rotate(-72),
  refine-pentagon3 = < rp1-1, rp1-2, rp3-3, rp3-4, rp3-5, rp3-6, rp3-7, rp3-8 >,
  
  invert = rotate(-36) . scale(1/#r),
  invert = <invert>
  
}
