anchor.diff:          height (r3 - r1) b >= 0.0 &&
           height (     r2) b >= 0.0 &&
           height (r3 - r2) b >= 0.0        
  +
  +    let containsDX (point : V3d) (viewProj : Trafo3d) =
  +        let fw = viewProj.Forward
  +        let r0 = fw.R0
  +        let r1 = fw.R1
  +        let r2 = fw.R2
  +        let r3 = fw.R3
  +        let p = V4d(point, 1.0)
  +
  +        Vec.dot (r3 + r0) p >= 0.0 &&
  +        Vec.dot (r3 - r0) p >= 0.0 &&
  +        Vec.dot (r3 + r1) p >= 0.0 &&
  +        Vec.dot (r3 - r1) p >= 0.0 &&
  +        Vec.dot (     r2) p >= 0.0 &&
  +        Vec.dot (r3 - r2) p >= 0.0       
   
       let toHull3dDX (viewProj : Trafo3d) =
           let r0 = viewProj.Forward.R0
  
positive.code: 
  
          Hull3d [|
              r3 + r0 |> toPlane
              r3 - r0 |> toPlane
              r3 + r1 |> toPlane
              r3 - r1 |> toPlane
              r3 + r2 |> toPlane
              r3 - r2 |> toPlane
          |]
  
      let inline toFastHull3d (viewProj : Trafo3d) =
          FastHull3d(toHull3d viewProj)
  
      let intersectsDX (b : Box3d) (viewProj : Trafo3d) =
          let fw = viewProj.Forward
  
negative.code:         height (r3 + r2) b >= 0.0 &&
          height (r3 - r2) b >= 0.0        
  
      let contains (point : V3d) (viewProj : Trafo3d) =
          let fw = viewProj.Forward
          let r0 = fw.R0
          let r1 = fw.R1
          let r2 = fw.R2
          let r3 = fw.R3
          let p = V4d(point, 1.0)
  
          Vec.dot (r3 + r0) p >= 0.0 &&
          Vec.dot (r3 - r0) p >= 0.0 &&
          Vec.dot (r3 + r1) p >= 0.0 &&
          Vec.dot (r3 - r1) p >= 0.0 &&
          Vec.dot (r3 + r2) p >= 0.0 &&
          Vec.dot (r3 - r2) p >= 0.0       
  
      let toHull3d (viewProj : Trafo3d) =
          let r0 = viewProj.Forward.R0
          let r1 = viewProj.Forward.R1
  