applications.collages.collageAlgebra("black-and-white border tiles"):
{
  ntColour = const(.8),
  w = const(sqrt(1/8)),
  
  blank =
%    { filledPolygon((0,0),(1,0),(1,-1),(0,-1))[1] },  % used to get a suitable bounding box
    {},
  
  inner = {
    polyline((0,-1/4), (1/4,0), (3/4,-1/2)),
    polyline((3/4,0), (1,-1/4), (1/2, -3/4)),
    polyline((1,-3/4), (3/4, -1), (1/4, -1/2)),
    polyline((1/4,-1), (0,-3/4), (1/2,-1/4))
  },
  edge = #blank + {
    curve((0,-1/4), (1/4 - #w / 2, 0) left (0, -.175) ),
    curve((0,-3/4), (1/4, -1/2), (1/4 + #w / 2, 0) left (0, -.35)),
    curve((0,-3/4), (1/4 - #w / 2, -1) left (0, .175)),
    curve((1/4, -1/2), (1/4 + #w / 2, -1) left (0, .35))
  },
  edge2 = #blank + {
    curve(
      (0,-1/4),
      (1/4,0),
      (1/2,-1/4),
      (3/4 - #w / 2, -1/2) left (0, .175),
      (1/2,-3/4)),
    polyline((1/4,-1), (0,-3/4), (1/2,-1/4)),
    curve((3/4, 0), (3/4 + #w / 2, -1/2) left (0, .35), (3/4, -1), (1/4, -1/2))
  },    
  corner = #blank + {
    curve((0,-1/4 + #w / 2) right (.05,0), (1/4 - #w / 2,0) left (0,-.05)),
    polyline((0,-1/4 - #w / 2), (1/4 + #w / 2,-1/4 - #w / 2), (1/4 + #w / 2,0))
  },
  corner2 = #blank + {
    curve(
      (0,-1/4),
      (1/4,0),
      (1/2,-1/4),
      (3/4 - #w / 2, -1/2) left (0, .175) right (0,-.05),
      (1/2, -3/4 + #w / 2) left (.05,0) right (-.175, 0),
      (1/4, -1/2)),
    curve(
      (3/4, 0),
      (3/4 + #w / 2, -1/2) left (0, .35) right (0,0),
      (3/4 + #w / 2, -3/4 - #w / 2),
      (1/2, -3/4 - #w / 2) left (0,0) right (-.35, 0),
      (0, -3/4),
      (1/2, -1/4)
    )
  },
  
  id = scale(1),
  d = translate(1,-1),
  v = translate(0,1) . rotate(-90) . translate(0,-1),
  h = translate(1,0),
  
  d = <id, v, h, d>,
  h = <id, h>,
  
  q1 = rotate(90),
  q2 = rotate(180),
  q3 = rotate(270),
  q = <id, q1, q2, q3>
  
}
