unity中的projection是什么意思?
我有以下代码,但我不知道它们的概念谁能帮助我并告诉我这些行是什么意思?
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)
开始的一条直线河流的方向, start_line.position
是一条船在河上的位置并且target.position
是用户希望船去的地方(可以在河外),那么得到的向量就是船沿河的运动。
如果您将该向量移动等于 start_line
你会得到 pos
= 船的最终位置。
还有 Vector3.ProjectOnPlane
在 Unity 中,它可以被认为是转换到地面上的物体的阴影(通过平面的法线而不是矢量的法线)。
Vector3.Project到底是什么
在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
关于c# - Vector3.Projection 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42179997/