ningshuxia
2025-03-26 6171f94b5ca6c804ac2892d214943ff0ac400d26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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);
            }
        }
    }
}