package uk.org.floop.epq3d; public class Plane { public Point3D mainPoint; public Vector3D normalVector; public double getDistance(Point3D point){ Vector3D vec = new Vector3D(0,0,0); vec.createFrom2Points(mainPoint, point); return normalVector.dot(vec); } public void initFrom3Points(Point3D _mainPoint, Point3D point1, Point3D point2){ // find normal vector to 3 points Vector3D vec1 = new Vector3D(0,0,0); Vector3D vec2 = new Vector3D(0,0,0); vec1.createFrom2Points(_mainPoint, point1); vec2.createFrom2Points(point1, point2); initFromPointAndVector(_mainPoint, vec1.cross(vec2)); } public void initFromPointAndVector(Point3D _mainPoint, Vector3D _normalVector){ // convert to unit vector mainPoint = _mainPoint; double len = _normalVector.getLength(); normalVector = new Vector3D( _normalVector.x / len, _normalVector.y / len, _normalVector.z / len); } }