Vector3d v1 = new Vector3d(); Vector3d v2 = new Vector3d(); v1.sub(p1, p2); v2.sub(p3, p2); Vector3d n = new Vector3d(); n.cross(v2, v1); n.normalize(); Vector3d p = new Vector3d(p1.x, p1.y, p1.z); double d = -p.dot(n);