将一个向量分解为 3 个向量
Decompose a vector in 3 vectors
我有一个物体以 v 的速度移动。该对象具有 forward、right 和 up 向量(以及 v 不需要向前)。都是相互垂直的。
如何在这 3 个向量上分解 v?在数学上,我如何定义 a、b 和 c 这样:
v = a * forward + b * right + c * up
例如,如果 v 与 forward 非常相似,则 a 应该具有最大的价值。
作为kmdreko's comment is getting at, use Vector3.Dot
:
Vector3 a = Vector3.Dot(v, forward);
Vector3 b = Vector3.Dot(v, right);
Vector3 c = Vector3.Dot(v, up);
确保 forward
、right
和 up
已标准化。如果您使用的是 transform.forward
、transform.right
和 transform.up
,那应该已经是这种情况了。
无论如何,如果它们尚未标准化,请改用 forward.normalized
、right.normalized
和 up.normalized
。
我有一个物体以 v 的速度移动。该对象具有 forward、right 和 up 向量(以及 v 不需要向前)。都是相互垂直的。
如何在这 3 个向量上分解 v?在数学上,我如何定义 a、b 和 c 这样:
v = a * forward + b * right + c * up
例如,如果 v 与 forward 非常相似,则 a 应该具有最大的价值。
作为kmdreko's comment is getting at, use Vector3.Dot
:
Vector3 a = Vector3.Dot(v, forward);
Vector3 b = Vector3.Dot(v, right);
Vector3 c = Vector3.Dot(v, up);
确保 forward
、right
和 up
已标准化。如果您使用的是 transform.forward
、transform.right
和 transform.up
,那应该已经是这种情况了。
无论如何,如果它们尚未标准化,请改用 forward.normalized
、right.normalized
和 up.normalized
。