applications.collages.collageAlgebra:
{
  ntColour = const(.8),
  ntColour2 = const(.6),
  h = const(cos(22.5)+sin(22.5)*tan(22.5)),

  K1 = { filledPolygon((0,0),
                       (sin(22.5),cos(22.5)),
                       (0,#h),
                       (-sin(22.5),cos(22.5)))[#ntColour],
         polygon((0,0),
                      (sin(22.5),cos(22.5)),
                       (0,#h),
                       (-sin(22.5),cos(22.5))) },
  K2 = { filledPolygon((0,0),
                       (sin(22.5),cos(22.5)),
                       (0,#h))[#ntColour2] },
  transK = scale(.85) . translate(0,#h * .075),
  K = #K1 + #K2 transformed by transK,
  kite = { filledPolygon((0,0),
                         (sin(22.5),cos(22.5)),
                         (0,#h),
                         (-sin(22.5),cos(22.5)))<0> },
  square1 = { filledPolygon((0,0),(1,0),(1,1),(0,1))<0> },
  square2 = #square1,
  SQ11 = { filledPolygon((0,0),(1,0),(1,1),(0,1))[#ntColour],
            polygon((0,0),(1,0),(1,1),(0,1)) },
  SQ12 = { filledPolygon((0,0),(1,0),(1,1),(0,1))[#ntColour2] },
  SQ21 = { filledPolygon((0,0),(1,0),(1,1),(0,1))[#ntColour2],
            polygon((0,0),(1,0),(1,1),(0,1)) },
  SQ22 = { filledPolygon((0,0),(1,0),(1,1),(0,1))[#ntColour] },
  SQtrans = similarity((0,0) -> (.5,.1), (1,0) -> (.9,.1)),
  SQ1 = #SQ11 + #SQ12 transformed by SQtrans,
  SQ2 = #SQ21 + #SQ22 transformed by SQtrans,
  
  o0 = scale(1),
  o1 = scale(-1,1) . rotate(45),
  o2 = rotate(90),
  o3 = scale(-1,1) . rotate(135),
  o4 = rotate(180),
  o5 = scale(-1,1) . rotate(225),
  o6 = rotate(270),
  o7 = scale(-1,1) . rotate(315),
  
  o = <o0,o1,o2,o3,o4,o5,o6,o7>,

  k0 = scale(.5),
  k1 = scale(.5) . translate(0,#h / 2),
  k2 = map((0,0) -> (-sin(22.5)/2,cos(22.5)/2),
           (1,0) -> (0,#h / 2),
           (0,1) -> (-sin(22.5),cos(22.5))),
  k3 = map((0,0) -> (0,#h / 2),
           (1,0) -> (sin(22.5)/2,cos(22.5)/2),
           (1,1) -> (sin(22.5),cos(22.5))),
  K1 = <k0,k1,k2,k3>,
  
  k20 = similarity((-sin(22.5),cos(22.5)) -> (-sin(22.5),cos(22.5)),
                   (sin(22.5),cos(22.5)) -> (0,cos(22.5))),
  k21 = similarity((-sin(22.5),cos(22.5)) -> (0,cos(22.5)),
                   (sin(22.5),cos(22.5)) -> (sin(22.5),cos(22.5))),
  k22 = scale(-1/2,-1/2) . translate(0,cos(22.5)),
  K2 = <k20,k21,k22>,
  
  sq0 = scale(.5),
  sq1 = scale(.5) . translate(.5,0),
  sq2 = scale(.5) . translate(0,.5),
  sq3 = scale(.5) . translate(.5,.5),
  
  sq = <sq0,sq1,sq2,sq3>,
  
  c001 = colourOperation(r|.5:0 ,g|.5:0 ,b|.5:1),
  c051 = colourOperation(r|.5:0 ,g|.5:.5,b|.5:1),
  c0-0 = colourOperation(r|.5:0         ,b|.5:0),
  c010 = colourOperation(r|.5:0 ,g|.5:1 ,b|.5:0),
  c100 = colourOperation(r|.5:1 ,g|.5:0 ,b|.5:0),
  c150 = colourOperation(r|.5:1 ,g|.5:.5,b|.5:0),
  c101 = colourOperation(r|.5:1 ,g|.5:0 ,b|.5:1),
  
  inv =colourOperation(r||1/2:0,g||1/2:0,b||1/2:0)


}
