+
+ /** fundamental error quadric for the plane with this normal passing through p */
+ public Matrix fundamentalQuadric(Point p) {
+ Vec n = this;
+ if (mag() != 1) n = norm();
+ float a = n.x;
+ float b = n.y;
+ float c = n.z;
+ float d = (-a * p.x) + (-b * p.y) + (-c * p.z);
+ return new Matrix(a*a, a*b, a*c, a*d,
+ a*b, b*b, b*c, b*d,
+ a*c, b*c, c*c, c*d,
+ a*d, b*d, c*d, d*d);
+ }