// get angle from three 3D points public static double getAngle(Point3D A, Point3D B, Point3D C) { double AB = Math.Sqrt( Math.Pow(B.getX() - A.getX(), 2) + Math.Pow(B.getY() - A.getY(), 2) + Math.Pow(B.getZ() - A.getZ(), 2)); double BC = Math.Sqrt( Math.Pow(C.getX() - B.getX(), 2) + Math.Pow(C.getY() - B.getY(), 2) + Math.Pow(C.getZ() - B.getZ(), 2)); double CA = Math.Sqrt( Math.Pow(A.getX() - C.getX(), 2) + Math.Pow(A.getY() - C.getY(), 2) + Math.Pow(A.getZ() - C.getZ(), 2)); if ((-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / (2 * AB * BC) < -1 || (-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / (2 * AB * BC) > 1) { Console.WriteLine("!!" + (-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / (2 * AB * BC)); } return((180 / 3.14) * Math.Acos((-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / (2 * AB * BC))); }
public Line3D(Point3D A, Point3D B) { x0 = A.getX(); l = B.getX() - A.getX(); y0 = A.getY(); m = B.getY() - A.getY(); z0 = A.getZ(); n = B.getZ() - A.getZ(); }
// get angle from three 3D points public static double getAngle(Point3D A, Point3D B, Point3D C) { double AB = Math.Sqrt( Math.Pow(B.getX() - A.getX(),2) + Math.Pow(B.getY() - A.getY(),2) + Math.Pow(B.getZ() - A.getZ(),2)); double BC = Math.Sqrt( Math.Pow(C.getX() - B.getX(),2) + Math.Pow(C.getY() - B.getY(),2) + Math.Pow(C.getZ() - B.getZ(),2)); double CA = Math.Sqrt( Math.Pow(A.getX() - C.getX(),2) + Math.Pow(A.getY() - C.getY(),2) + Math.Pow(A.getZ() - C.getZ(),2)); if ((-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / ( 2 * AB * BC) < -1 || (-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / ( 2 * AB * BC) > 1) Console.WriteLine("!!" + (-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / ( 2 * AB * BC)); return (180/3.14) * Math.Acos((-Math.Pow(CA, 2) + Math.Pow(AB, 2) + Math.Pow(BC, 2)) / ( 2 * AB * BC) ); }