矢量投影混乱

时间:2014-08-01 17:59:02

标签: vector project projection

如果我有一个向量(0,0,9)并且我想将它投影到向量上(0,0.7,0.7),那么不应该给我一个向量(0,9,9)。

我使用以下公式

Vector3.Dot (vector, normal) * normal.magnitude * normal;

返回(0,0.45,0.45)。我错过了什么,不是返回的矢量z假设在与投影矢量相同的z位置结束。喜欢这个

enter image description here

1 个答案:

答案 0 :(得分:0)

将矢量投影到另一个矢量时,结果的幅度始终小于或等于原始矢量的幅度。

给定一个标准化的向量 u ,将 v 投影到 u 上,公式如下:

  

proj u v = << em> u , v > u

或者,在代码中,

Vector3.Dot(vector, normal) * normal

将(0,0,9)投影到(0,√1/ 2,√1/ 2)的结果为(0,4.5,4.5)。

请注意,normal.magnitude始终为1,除非normal不是“正常”(在这种情况下,您将变量命名为错误);如果它不正常,你需要除以平方幅度,而不是乘以。

Vector3.Dot(vector, direction) * direction
    * (1.0 / direction.magnitude_squared)