确定Vector 3沿另一个Vector 3的距离

时间:2016-01-28 10:58:23

标签: math unity3d geometry

我有2个3D矢量。 (具有X,Y和Z浮点值的对象)

在下面的图表中,我想确定绿线的长度。 这是Vector 2的向量1的距离。或者,从矢量1的原点到行尾的距离,它与向量1的90'相交,并经过向量2末尾的点。

enter image description here

我在Unity3D中这样做,所以我可以访问很多辅助方法,使我能够很容易地获得Vector3的长度等等。

3 个答案:

答案 0 :(得分:1)

这是Vector2向Vector1方向的投影。最简单的方法(我认为)找到它 - 使用标量产品

D = | V2 | * DotProduct( V2 V1 )/(| V2 | * | V1 |)= DotProduct( V2 V1 )/ | V1 |

其中| V1 |是 V1 向量

的长度

答案 1 :(得分:1)

长度显然是

norm(v2)*cos(angle(v1,v2))

以及

cos(angle(v1,v2))=abs(dot(v1,v2))/norm(v1)/norm(v2)

最终公式为

abs(dot(v1,v2))/norm(v1)

还可以说

e1 = v1/norm(v1)

v1方向的单位向量,绿色向量是

dot(e1,v2)*e1

产生相同长度的公式。

答案 2 :(得分:0)

我不确定,但我认为这是你想要的

Vector3 distance = Vector3.Lerp(Vector3.zero, vector_1, vector_2.sqrMagnitude / vector_1.sqrMagnitude);

http://docs.unity3d.com/ScriptReference/Vector3-sqrMagnitude.html

http://docs.unity3d.com/ScriptReference/Vector3.Lerp.html