我有2个3D矢量。 (具有X,Y和Z浮点值的对象)
在下面的图表中,我想确定绿线的长度。 这是Vector 2的向量1的距离。或者,从矢量1的原点到行尾的距离,它与向量1的90'相交,并经过向量2末尾的点。
我在Unity3D中这样做,所以我可以访问很多辅助方法,使我能够很容易地获得Vector3的长度等等。
答案 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