【发布时间】:2019-11-08 10:23:30
【问题描述】:
我想计算两个 System.Numerics.Vector3 之间的角度,但我找不到任何函数。 Google 仅查找 2d 点的结果。 我想在 c# 中实现这个。
【问题讨论】:
-
角度如何在 3D 空间中开始工作?在 2D 平面上,它是从 0° 到 360° 的任意位置。但是 3D 空间的最小值/最大值是多少?或者你会得到 3 个角度,每个可能的 3 个坐标对都有一个角度?
我想计算两个 System.Numerics.Vector3 之间的角度,但我找不到任何函数。 Google 仅查找 2d 点的结果。 我想在 c# 中实现这个。
【问题讨论】:
var v = new Vector3(1, 2, 3);
var u = new Vector3(4, 5, 6);
var angleInRadians = Math.Acos(Vector3.Dot(v, u) / (v.Length() * u.Length()));
请记住,ACos 返回弧度,因此您可能需要将其转换为度数。结果值应在 0 到 180 度之间。您还应该确保向量的长度不为零。
来源:
【讨论】: