雷 - 平面交叉口

时间:2014-11-13 23:59:03

标签: raytracing plane

即使经过长时间的互联网搜索,我也无法解决以下问题。

如何计算光线中平面的交点?

飞机由四点描述:

A (ax, ay, 0)
B (bx, by, 0)
C (cx, cy, 0)
D (dx, dy, 0)
雷有:

Vector3f origin;
Vector3f direction;

现在,我想写一个检查HIT的方法。 有人能告诉我一个解决方案吗?

public Boolean checkHit(Ray myRay){
.
.
.    
}

谢谢

1 个答案:

答案 0 :(得分:0)

平面可以由单位法线向量(nx,ny,nz)和距离原点d的标量距离定义,使得平面方程为nx*x+ny*y+nz*z=d。你需要让飞机从3点到这种格式才能继续。如果您不知道如何查找从三个点找到一架飞机

现在可以通过单位方向向量(ex,ey,ez)指定行,并沿着行(rx,ry,rz)指定某个点

  1. 找到产品s=(nx*ex+ny*ey+nz*ez)。如果它为零则没有交集
  2. 找到交叉点与行t=(d-(nx*rx+ny*ry+nz*rz))/s
  3. 上的点的距离
  4. 交叉点位于c=(rx+ex*t, ry+ey*t, rz+ez*t)