【发布时间】:2019-04-12 08:32:41
【问题描述】:
我想计算一个vector3d和其他vector3d之间的360度角
我已经用 vector3d.AngleBetween 尝试过,但这会产生 180 度的结果
//Create a new 3d vector from average points
Vector3D vector1 = new Vector3D(averageX, averageY, 0);
//Create reference vector
Vector3D vector2 = new Vector3D(averageX-100, averageY, 0);
Vector3D vectorResult1 = new Vector3D();
vectorResult1 = vector2 - vector1;
//Other vector to all points in layer
foreach (XYZ d1 in coord)
{
Vector3D vector3 = new Vector3D(d1.X, d1.Y, d1.Z);
Vector3D vectorResult2 = new Vector3D();
vectorResult2 = vector3-vector1;
//Define a rotation
double angleBetween = Vector3D.AngleBetween(vectorResult2, vectorResult1);
}
【问题讨论】:
-
实际值和期望是多少?
-
为什么选择 360?除非您指定旋转方向,否则没有区别。顺时针 90° 角与逆时针 270° 角相同。
-
我需要向量之间的每个角度,以便对它们进行排序。结果我想顺时针排序点