public HessePlane(ICoordinated a, ICoordinated b, ICoordinated c) { NormalVector = (b.Minus(a)).CrossProduct(c.Minus(a)); NormalVector.Normalize(); RootDistance = a.ScalarProduct(NormalVector); if (RootDistance < 0) { RootDistance *= -1; NormalVector.X *= -1; NormalVector.Y *= -1; NormalVector.Z *= -1; } }
//public static Vector Subtr(this ICoordinated a, ICoordinated b) //{ // var vector = new Vector(); // vector.X = a.X - b.X; // vector.Y = a.Y - b.Y; // vector.Z = a.Z - b.Z; // return vector; //} public static double DistanceValue(this ICoordinated vector, HessePlane plane) { return(vector.ScalarProduct(plane.NormalVector) - plane.RootDistance); }