applications.collages.collageAlgebra:
{
  ntColour = const(.8),
  ntColour2 = const(.6),
  
  fixX = const(10),
  fixY = const(5),

  snail = {
    filledCurve(
      (-1,0) left (.1,.05) right (.3,0),
      (0,0) left (-.9,0) right (1.2,0),
      (1.25,.42) left(-.2,-.15) right (0,0),
      (1.3,.44) left (0,0) right (.03,.05),
      (1.275,.55) left (0,0) right (.15,.1),
      (1.6,.9) left (-.2,-.1) right (.03,.03),
      (1.575,.925) left (.03,.03) right (-.2,-.1),
      (1.25,.6) left (.11, .06) right (.14,.05),
      (1.5,1.02) left (-.2,-.15) right (.04,.03),
      (1.47,1.04) left (.02,.02) right (-.17,-.13),
      (1.25,.65) left (.08,.1),
      (.7,.35) right (-.1,-.15),
      (.2,.2) left (.3,.05),
      (-.3,.15) left (.2,0) right (-.5,0)
    ),
    filledCurve(
      (.2,.1) left (-1,-.2) right (1,0),
      (0,1.1) left (.8,.1) right (-1,-.3)
    )
  },
  S = {
    filledCurve(
      (-1,0) left (.1,.05) right (.3,0),
      (0,0) left (-.9,0) right (1.2,0),
      (1.25,.42) left(-.2,-.15) right (0,0),
      (1.3,.44) left (0,0) right (.03,.05),
      (1.275,.55) left (0,0) right (.15,.1),
      (1.6,.9) left (-.2,-.1) right (.03,.03),
      (1.575,.925) left (.03,.03) right (-.2,-.1),
      (1.25,.6) left (.11, .06) right (.14,.05),
      (1.5,1.02) left (-.2,-.15) right (.04,.03),
      (1.47,1.04) left (.02,.02) right (-.17,-.13),
      (1.25,.65) left (.08,.1),
      (.7,.35) right (-.1,-.15),
      (.2,.2) left (.3,.05),
      (-.3,.15) left (.2,0) right (-.5,0)
    )[#ntColour],
    closedCurve(
      (-1,0) left (.1,.05) right (.3,0),
      (0,0) left (-.9,0) right (1.2,0),
      (1.25,.42) left(-.2,-.15) right (0,0),
      (1.3,.44) left (0,0) right (.03,.05),
      (1.275,.55) left (0,0) right (.15,.1),
      (1.6,.9) left (-.2,-.1) right (.03,.03),
      (1.575,.925) left (.03,.03) right (-.2,-.1),
      (1.25,.6) left (.11, .06) right (.14,.05),
      (1.5,1.02) left (-.2,-.15) right (.04,.03),
      (1.47,1.04) left (.02,.02) right (-.17,-.13),
      (1.25,.65) left (.08,.1),
      (.7,.35) right (-.1,-.15),
      (.2,.2) left (.3,.05),
      (-.3,.15) left (.2,0) right (-.5,0)
    ),
    filledCurve(
      (.2,.1) left (-1,-.2) right (1,0),
      (0,1.1) left (.8,.1) right (-1,-.3)
    )[#ntColour],
    closedCurve(
      (.2,.1) left (-1,-.2) right (1,0),
      (0,1.1) left (.8,.1) right (-1,-.3)
    )
  },
  A = {
    filledCurve(
      (-1,0) left (.1,.05) right (.3,0),
      (0,0) left (-.9,0) right (1.2,0),
      (1.25,.42) left(-.2,-.15) right (0,0),
      (1.3,.44) left (0,0) right (.03,.05),
      (1.275,.55) left (0,0) right (.15,.1),
      (1.6,.9) left (-.2,-.1) right (.03,.03),
      (1.575,.925) left (.03,.03) right (-.2,-.1),
      (1.25,.6) left (.11, .06) right (.14,.05),
      (1.5,1.02) left (-.2,-.15) right (.04,.03),
      (1.47,1.04) left (.02,.02) right (-.17,-.13),
      (1.25,.65) left (.08,.1),
      (.7,.35) right (-.1,-.15),
      (.2,.2) left (.3,.05),
      (-.3,.15) left (.2,0) right (-.5,0)
    )[#ntColour2],
    closedCurve(
      (-1,0) left (.1,.05) right (.3,0),
      (0,0) left (-.9,0) right (1.2,0),
      (1.25,.42) left(-.2,-.15) right (0,0),
      (1.3,.44) left (0,0) right (.03,.05),
      (1.275,.55) left (0,0) right (.15,.1),
      (1.6,.9) left (-.2,-.1) right (.03,.03),
      (1.575,.925) left (.03,.03) right (-.2,-.1),
      (1.25,.6) left (.11, .06) right (.14,.05),
      (1.5,1.02) left (-.2,-.15) right (.04,.03),
      (1.47,1.04) left (.02,.02) right (-.17,-.13),
      (1.25,.65) left (.08,.1),
      (.7,.35) right (-.1,-.15),
      (.2,.2) left (.3,.05),
      (-.3,.15) left (.2,0) right (-.5,0)
    ),
    filledCurve(
      (.2,.1) left (-1,-.2) right (1,0),
      (0,1.1) left (.8,.1) right (-1,-.3)
    )[#ntColour2],
    closedCurve(
      (.2,.1) left (-1,-.2) right (1,0),
      (0,1.1) left (.8,.1) right (-1,-.3)
    )
  },
  
  f = translate(-#fixX,-#fixY) . rotate(5) . scale(.82) . translate(#fixX,#fixY),
  F = <#snail,f>,
  
  g = translate(-#fixX,-#fixY) . rotate(-8) . scale(.92) . translate(#fixX,#fixY),
  G = <#snail,f,g>
  
}
