   return dot (perp (a, b), x - b);
 }
 
-vec2 flip (vec3 A, vec3 U, vec3 V)
-{
-  vec3 e = U - A;
-  vec3 v = V - U;
-  return raster (U - v + (2 * dot (v, e) / dot (e, e)) * e);
-}
-
 void segment (vec3 A, vec3 W, vec3 X, vec4 c, vec4 d, vec4 e, vec2 a, vec2 u, vec2 v, vec2 w, vec2 x, vec2 y, vec2 z)
 {
   vec2 k, l;

{
  N = Q;
  vec3 C = O + dot (U - O, Q) * Q;
  vec4 x = project (C);
  vec2 c = pdivide (x);
  vec2 t = flip (C, U, V);
  vec2 u = pdivide (y);
  vec2 v = pdivide (z);
  vec2 w = flip (C, V, U);
  vec2 k = perp (t, u);
  vec2 l = perp (v, w);
  triangle (C, U, V, x, y, z,

out noperspective vec3 E;

vec3 O = m [3].xyz;

void vertex (vec3 x, vec4 p, vec3 e)
{
