投影在统一中是什么意思?
我有以下代码,但我不知道它们的概念,谁能帮助我并告诉我这些行是什么意思?
Vector3 normal = (end_line.position - start_line.position).normalized;
Vector3 pos = start_line.position + Vector3.Project (target.position-start_line.position,normal);
Vector3 normal = (end_line.position - start_line.position).normalized;
normal
是直线(矢量)的方向。对其进行了归一化,以使其大小等于1。如果删除.normalized
部分,它将代表直线(向量)本身。
让我们分解一下:
Vector3 pos = start_line.position
+ Vector3.Project(target.position - start_line.position, normal);
[target.position-start_line.position
是另一个从start_line
开始并在target
结束的向量
[Vector3.Project(target.position - start_line.position, normal)
将此向量投影到normal
上。
[如果normal
是从(0,0,0)
开始的河流方向,target.position
是船在河上的位置,并且start_line.position
是用户希望船驶向的位置(可能在河外) ,则得出的向量就是船沿河的运动。
如果移动等于start_line
的向量,您将得到pos
=船的最终位置。
Unity中也有Vector3.ProjectOnPlane
,可以将其视为投射到地面上的对象的阴影(通过平面的法线而不是矢量的法线)。
在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