即使经过长时间的互联网搜索,我也无法解决以下问题。
如何计算光线中平面的交点?
飞机由四点描述:
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){
.
.
.
}
谢谢
答案 0 :(得分:0)
平面可以由单位法线向量(nx,ny,nz)
和距离原点d
的标量距离定义,使得平面方程为nx*x+ny*y+nz*z=d
。你需要让飞机从3点到这种格式才能继续。如果您不知道如何查找从三个点找到一架飞机。
现在可以通过单位方向向量(ex,ey,ez)
指定行,并沿着行(rx,ry,rz)
指定某个点
s=(nx*ex+ny*ey+nz*ez)
。如果它为零则没有交集t=(d-(nx*rx+ny*ry+nz*rz))/s
c=(rx+ex*t, ry+ey*t, rz+ez*t)