射线与平面相交判断

1 射线

定义

在欧几里德几何中,射线的定义如下:

直线上一点和它一旁的部分,由此知射线有两个性质:

1. 有一个端点

2. 一端无线延伸

参数方程

p(t) = p0 + tu

p0 是射线的起点, u是射线的方向向量,t∈[0,∞) 

解释一下这个方程,见下图,根据t的取值不同,可得射线上不同的点,所有这些点便构成了整个射线(红色部分)

 

 

 

2 平面

定义

中文的没找到,英文的:In mathematics, a plane is a flat surface

一个平面可以由平面上的一点p0 和平面的法向量n来确定(过一点,有且只有一个平面与已知直线垂直),如下图

射线与平面相交判断_第1张图片 

参数方程

平面是由无穷多个点组成的,对于过点p0 且法向量为n的平面来说,其上任意一点p满足如下方程

n•(p - p0) = 0

解释一下, 符号“•”表示dot product(点积),因n与平面垂直,所以n与平面内任意直线垂直,而p - p0则是平面内的一个向量,所以n与p - p0垂直,又因为互相垂直的向量其点积为0,所以就有了上面的方程。见下图

射线与平面相交判断_第2张图片

向量的点积:对于任意两个向量V1(x1, y1, z1)与V2(x2, y2, z2),V1•V2 = x1x2 + y1y2 + z1z2  

 

 3 切入正题,射线与平面相交。

  射线若于平面相交,则交点一定在平面上,设交点为p,那么p一定同时满足射线的方程和平面的方程,于是

  p(t) = p0 + tu //这里的p0是射线的起点 

  n•(p - p0) = 0 //这里的p0是平面所过的点

  注意,这两个方程中的p0是不同的,为区别,将平面方程中的p0改为p1,然后将射线方程代入平面方程

  n•(p0 + tu – p1) = 0 整理后得到

  t = (n•p1 – n•p0) / n•u (注意:n不可约去)

      由向量点乘分配律得:

      t = n•(p1-p0)/n•u

  若t∈[0,∞),则射线与平面相交,且交点为p0 + tu,将上面的t带入射线方程即可否则不相交。

你可能感兴趣的:(Unity)