如何获得自定义(相对)轴上从点a到点b的距离?

时间:2014-02-06 01:43:01

标签: unity3d distance

在给定自定义轴的情况下,尝试查找从a点到b点的距离。我有一些照片可以帮助我更好地解释:

one

我试图在两个自定义轴上找到红色到粉红色(或灰色)的距离。轴从红色到绿色(轴RG),轴从红色到蓝色(轴RB)。

two three

1 个答案:

答案 0 :(得分:4)

你问的是vector projection

鉴于两个向量ABA投射到B是什么?

In this picture A is projected onto B.

在您的情况下,A似乎是红色和粉红色之间的差异,其中B就是您所谓的自定义轴。

计算此投影通常涉及点积。幸运的是,Unity提供了Vector3.Dot来简化这一过程。

我们可以将投影计算为标量。 A在B方向是“这么多”:

float projScalar = Vector3.Dot(A, B.normalized);

这给了我们你要问的长度。

如果需要,我们可以将该结果转换为向量,方法是将该长度转换为B:

Vector3 projVector = B.normalized * projScalar;