投影在统一中意味着什么?
我有以下代码,但我不知道他们的概念可以有人帮助我并告诉我这些行是什么意思吗?
Vector3 normal = (end_line.position - start_line.position).normalized;
Vector3 pos = start_line.position + Vector3.Project (target.position-start_line.position,normal);
答案 0 :(得分:4)
Vector3 normal =(end_line.position - start_line.position).normalized;
normal
是直线(矢量)的方向。它被规范化,使其大小等于1.如果删除.normalized
部分,它将代表行(向量)本身。
Vector3 pos = start_line.position + Vector3.Project (target.position-start_line.position,正常);
让我们分解一下:
target.position-start_line.position
是另一个向量,从start_line
开始,到target
结束
Vector3.Project(target.position-start_line.position,normal)
将此向量投射到normal
上。如果你认为normal
是地面(可能是旋转世界)而且它是中午(12:00)那么结果向量就是你所看到的target.position-start_line.position
的阴影所引起的太阳并投射到地面上。
如果您将该向量移动到start_line
,则会得到pos
。
p = Vector3.Project(a,n)
中的
简单;向a
方向绘制了多少向量n
。
a
是投射到n
的源矢量。
n
是一个归一化向量,它代表一个轴。 我不知道归一化向量(0,1)和非归一化向量(0,2)是否给出相同的结果。
p
是通过将a
投影到n
而创建的矢量。
您始终可以假设n
从a
开始的地方开始。由于n
是一个轴,你可以假设它是一条无穷无尽的线(从-inf到+ inf)。因此,如果您将a
移动到n
轴上的零点(n
向量的起点),您将得到以下内容:
vector = a,onNormal = n,Projection = p
a.normalized = n
则p = a
。a is perpendicular to n
则p = Vector3.zero
。p.magnitude <= a.magnitude
因为同样的原因,阴影不能长于中午来源。在图中,normal是(0,1,0),但在这种特殊情况下,您也可以使用(0,a.y,0)而不是项目。