ei = 1e4-1e3,           // e-infinite
      eo = 0.5*(1e4+1e3);     // e-origin
  
// Define points, lines, circles using the null basis.  
  var point  = (x,y)=>eo + x*1e1 + y*1e2 + 0.5*(x*x+y*y)*ei,
      line   = (a,b,c)=>!(a*1e1 + b*1e2 + c*ei),
      circle = (x,y,r)=>!(point(x,y) - r**2/2*ei);
  
// Distances and Angles. 
  var dist=(x,y)=>(2*(x<<y).Length)**0.5,
      angle=(x,y)=>Math.acos(!x.Normalized<<!y.Normalized);

// Rotator, Translator
  var translate = (v)=>(1-.5*v^ei),
      rotate    = (P