将一个向量分解为 3 个向量



我有一个物体以速度v移动。对象具有向前、向右和向上量(v不需要在正向方向(。它们都是相互垂直的。

如何在这 3 个向量上分解v?在数学上,我如何定义abc,以便:

v = a * forward + b * right + c * up

例如,如果v前向非常相似,则a应该具有最大值。

正如 kmdreko 的评论所得到的那样,请使用Vector3.Dot

Vector3 a =  Vector3.Dot(v, forward);
Vector3 b =  Vector3.Dot(v, right);
Vector3 c =  Vector3.Dot(v, up);

确保forwardrightup已规范化。如果您使用的是transform.forwardtransform.righttransform.up,应该已经是这种情况了。

无论如何,如果它们尚未规范化,请改用forward.normalizedright.normalizedup.normalized

最新更新