Vector 矢量投影混淆

Vector 矢量投影混淆,vector,project,projection,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位置结束吗。像这样 将向量投影到另一个向量上时,结果的幅值始终小于或等于原始向量的幅值 给定一个标准化向量u,用公式将v投影到u上: 项目v=〈u、 五〉u 或者,在代码中 Vecto

如果我有一个向量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位置结束吗。像这样


将向量投影到另一个向量上时,结果的幅值始终小于或等于原始向量的幅值

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

项目v=〈u、 五〉u

或者,在代码中

Vector3.Dot(vector, normal) * normal
将0,0,9投影到0上的结果,√1/2, √1/2是0,4.5,4.5

注意normal.magnity始终为1,除非normal不是normal,在这种情况下,您的变量命名错误;如果它不正常,你需要除以平方大小,而不是乘

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

两个答案都错了。正确的结果是0,4.5,4.5。那么我如何将一个向量投影到另一个z值相同的向量上呢?这不是投影。你画的图是对的,投影向量是直角的一条腿,原始向量是斜边。你想干什么?我应该纠正自己。。。这不是正交投影。它可能仍然是一个投影。然而不确定确切的要求是什么。