【问题标题】:Decompose a vector in 3 vectors将一个向量分解为 3 个向量
【发布时间】:2020-05-20 04:10:03
【问题描述】:

我有一个物体以 v 的速度移动。对象有 forwardrightup 向量(并且 v 不需要在前向)。它们都相互垂直。

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

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

例如,如果 vforward 非常相似,则 a 应该具有最大的值。

【问题讨论】:

  • 您正在寻找向量之间的点积,请参阅Vector3.Dot()

标签: unity3d vector game-physics physics


【解决方案1】:

随着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

【讨论】:

    猜你喜欢
    • 2013-11-18
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多