【问题标题】:Calculating angle between two vectors计算两个向量之间的角度
【发布时间】:2019-11-08 10:23:30
【问题描述】:

我想计算两个 System.Numerics.Vector3 之间的角度,但我找不到任何函数。 Google 仅查找 2d 点的结果。 我想在 c# 中实现这个。

【问题讨论】:

  • 角度如何在 3D 空间中开始工作?在 2D 平面上,它是从 0° 到 360° 的任意位置。但是 3D 空间的最小值/最大值是多少?或者你会得到 3 个角度,每个可能的 3 个坐标对都有一个角度?

标签: c# math vector angle


【解决方案1】:
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 度之间。您还应该确保向量的长度不为零。

来源:

https://math.stackexchange.com/questions/974178/how-to-calculate-the-angle-between-2-vectors-in-3d-space-given-a-preset-function

【讨论】:

  • 这应该和这个一样吧? Math.Acos(Vector3.Dot(Vector3.Normalize(pFirstVec), Vector3.Normalize(pSecondVec)));
  • @Vectorboy 是的,您可以在点积之前或之后进行归一化。
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2017-08-22
相关资源
最近更新 更多