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);
|
}
|
}
|
}
|
}
|