c# - Vector3.Projection 是什么意思?

标签 c# unity3d

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)。所以如果你移动an 上的零点轴(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

关于c# - Vector3.Projection 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42179997/

相关文章:

android - 为什么我的Gradle无法在Unity Android Build上使用?

c# - 如何确定两个圆圈是否重叠或接触?

unity3d - 将物体放在相机前

c# - 在word文档的页脚中添加从第n页开始的页码

c# - String 和 Double 的非常奇怪的问题

c# - 无法理解 LINQ 扩展方法

c# - 未在 Unity 中播放的音频

c# - 验证带有附件 "the hash value is not correct"的数字签名电子邮件

c# - 数字的模数 - python vs c#

c# - : means in a function parameter 是什么