namespace HydroUI { [Serializable] public class Vector3D { public double X { get; set; } public double Y { get; set; } public double Z { get; set; } public Vector3D(double x, double y, double z) { X = x; Y = y; Z = z; } public static double CalculateAngle(Vector3D v1, Vector3D v2) { // 计算两个向量的点积 double dotProduct = v1.X * v2.X + v1.Y * v2.Y + v1.Z * v2.Z; // 计算两个向量的模长 double v1Magnitude = Math.Sqrt(v1.X * v1.X + v1.Y * v1.Y + v1.Z * v1.Z); double v2Magnitude = Math.Sqrt(v2.X * v2.X + v2.Y * v2.Y + v2.Z * v2.Z); // 计算夹角(弧度) double angleInRadians = Math.Acos(dotProduct / (v1Magnitude * v2Magnitude)); // 将弧度转换为度数 //double angleInDegrees = angleInRadians * (180 / Math.PI); return angleInRadians; } public double Length { get { return Math.Sqrt(X * X + Y * Y + Z * Z); } } } }