applications.collages.collageAlgebra:
  {
    ntColour = const(.8),
    h = const(sqrt(3)/6),
    
    bg = %{ filledPolygon((0,0),(.5,-#h),(1,0),(1,2 * #h),(.5,3 * #h),(0,2 * #h)) },
         { polygon((0,0),(.5,-#h),(1,0),(1,2 * #h),(.5,3 * #h),(0,2 * #h)) },
    bg-scale = scale(1.04) . translate(-.02,-.04 * #h),
    background = #bg transformed by bg-scale,
    
    curve = { filledCurve((0,0) left (1/2*cos(5),1/2*sin(5)) right (1/3*cos(75),1/3*sin(75)),
              (2/3*cos(60)+1/3,2/3*sin(60)) right (1/2*cos(45),-1/2*sin(45)),
              (1/3,1/8) left (1/3*cos(30),1/3*sin(30)) right (1/10*cos(-15),1/10*sin(-15)),
              (3/5,1/20) right (1/10,0),
              (1,0) left (-1/5*cos(20), 1/5*sin(20)) right (-2/3*cos(15), -2/3*sin(15)))<1/2,1/2,1/2> },
        
    sample-outline = { curve((0,0) left (1/2*cos(5),1/2*sin(5)) right (1/3*cos(75),1/3*sin(75)),
              (2/3*cos(60)+1/3,2/3*sin(60)) right (1/2*cos(45),-1/2*sin(45)),
              (1/3,1/8) left (1/3*cos(30),1/3*sin(30)) right (1/10*cos(-15),1/10*sin(-15)),
              (3/5,1/20) right (1/10,0),
              (1,0) left (-1/5*cos(20), 1/5*sin(20)) right (-2/3*cos(15), -2/3*sin(15))) },
    sample-filled = { filledCurve((0,0) left (1/2*cos(5),1/2*sin(5)) right (1/3*cos(75),1/3*sin(75)),
              (2/3*cos(60)+1/3,2/3*sin(60)) right (1/2*cos(45),-1/2*sin(45)),
              (1/3,1/8) left (1/3*cos(30),1/3*sin(30)) right (1/10*cos(-15),1/10*sin(-15)),
              (3/5,1/20) right (1/10,0),
              (1,0) left (-1/5*cos(20), 1/5*sin(20)) right (-2/3*cos(15), -2/3*sin(15)))[#ntColour,#ntColour,#ntColour] },
    sample = #sample-filled + #sample-outline,
    
    C = #curve,
    C0 = #curve,
    
    f1 = scale(1/3,-1/3) . rotate(60),
    f2 = scale(-1/3,1/3) . translate(2/3,0) . rotate(60),
    f3 = scale(-1/3,1/3) . translate(1/3,0) . rotate(-60) . translate(2/3,0) . rotate(60),
    f4 = scale(-1/3,1/3) . translate(1/3,0) . rotate(-120) . translate(2/3,0) . rotate(60) . translate(1/3,0),
    f5 = scale(sqrt(3)/3) . rotate(30) . translate(1/3,0),
    f6 = scale(1/3,-1/3) . translate(1/3,0),
    f7 = scale(-1/3,1/3) . translate(1,0),
    F = <f1,f2,f3,f4,f5,f6,f7>,
    
    switch = scale(-1,1) . translate(1,0),
    g1 = use(switch) . use(f1),
    g2 = use(switch) . use(f2),
    g3 = use(switch) . use(f3),
    g4 = use(switch) . use(f4),
    g5 = use(switch) . use(f5),
    g6 = use(switch) . use(f6),
    g7 = use(switch) . use(f7),
    G = <g1,g2,g3,g4,g5,g6,g7>,
    
    col1a=colourOperation(r| 6/7:0  ,b| 6/7:1  ,g| 6/7:0  ),
    col2a=colourOperation(r||6/7:1/6,b||6/7:5/6,g||6/7:1/6),
    col3a=colourOperation(r||6/7:2/6,b||6/7:4/6,g||6/7:2/6),
    col4a=colourOperation(r||6/7:3/6,b||6/7:3/6,g||6/7:3/6),
    col5a=colourOperation(r||6/7:4/6,b||6/7:2/6,g||6/7:4/6),
    col6a=colourOperation(r| 6/7:5/6,b| 6/7:1/6,g| 6/7:5/6),
    col7a=colourOperation(r||6/7:1  ,b||6/7:0  ,g||6/7:1  ),
 
    col1b=colourOperation(r||6/7:0  ,b||6/7:1  ,g||6/7:0  ),
    col2b=colourOperation(r| 6/7:1/6,b| 6/7:5/6,g| 6/7:1/6),
    col3b=colourOperation(r| 6/7:2/6,b| 6/7:4/6,g| 6/7:2/6),
    col4b=colourOperation(r| 6/7:3/6,b| 6/7:3/6,g| 6/7:3/6),
    col5b=colourOperation(r| 6/7:4/6,b| 6/7:2/6,g| 6/7:4/6),
    col6b=colourOperation(r||6/7:5/6,b||6/7:1/6,g||6/7:5/6),
    col7b=colourOperation(r| 6/7:1  ,b| 6/7:0  ,g| 6/7:1  ),
    
    colb1a=colourOperation(g| 6/7:0  ),
    colb2a=colourOperation(g||6/7:1/6),
    colb3a=colourOperation(g||6/7:2/6),
    colb4a=colourOperation(g||6/7:3/6),
    colb5a=colourOperation(g||6/7:4/6),
    colb6a=colourOperation(g| 6/7:5/6),
    colb7a=colourOperation(g||6/7:1  ),
 
    colb1b=colourOperation(g||6/7:0  ),
    colb2b=colourOperation(g| 6/7:1/6),
    colb3b=colourOperation(g| 6/7:2/6),
    colb4b=colourOperation(g| 6/7:3/6),
    colb5b=colourOperation(g| 6/7:4/6),
    colb6b=colourOperation(g||6/7:5/6),
    colb7b=colourOperation(g| 6/7:1  ),
    
    inv=colourOperation(r||0:0,b||0:0)
    
    
  }
