Vector3.Projection是什么意思?

问题描述 投票:2回答:1

投影在统一中是什么意思?

我有以下代码,但我不知道它们的概念,谁能帮助我并告诉我这些行是什么意思?

Vector3 normal = (end_line.position - start_line.position).normalized;
Vector3 pos = start_line.position + Vector3.Project (target.position-start_line.position,normal);
c# unity3d
1个回答
6
投票
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,可以将其视为投射到地面上的对象的阴影(通过平面的法线而不是矢量的法线)。

Vector3.Project到底是什么?>

p = Vector3.Project(a,n)

简单地说;沿a方向绘制了多少矢量n

[a是正投影到n上的源向量。

n是归一化向量,它可以表示一个轴。 我不知道归一化向量(0,1)和未归一化向量(0,2)是否给出相同的结果。]

[p是通过将a投影到n上而创建的向量。

您始终可以假设na的起始位置开始。由于n是轴,因此可以假定它是一条连续的线(从-inf到+ inf)。因此,如果将a移至n轴上的零点(n矢量的起点),您将看到类似以下内容:

enter image description here正常为(0,1,0)

vector = a,onNormal = n,Projection = p

  • 如果a.normalized = n,则为p = a
  • 如果a is perpendicular to n,则为p = Vector3.zero
  • p.magnitude <= a.magnitude
© www.soinside.com 2019 - 2024. All rights reserved.