Raytracing 射线平面相交
我有以下问题,我无法解决,即使在互联网上搜索了很长时间 如何计算平面在光线中的交点 该平面由四个点描述:Raytracing 射线平面相交,raytracing,plane,Raytracing,Plane,我有以下问题,我无法解决,即使在互联网上搜索了很长时间 如何计算平面在光线中的交点 该平面由四个点描述: A (ax, ay, 0) B (bx, by, 0) C (cx, cy, 0) D (dx, dy, 0) 雷有: Vector3f origin; Vector3f direction; 现在,我想写一个检查命中率的方法。 有人能给我一个解决办法吗 public Boolean checkHit(Ray myRay){ . . . } 谢谢平面可以由单位法向量(nx,ny
A (ax, ay, 0)
B (bx, by, 0)
C (cx, cy, 0)
D (dx, dy, 0)
雷有:
Vector3f origin;
Vector3f direction;
现在,我想写一个检查命中率的方法。
有人能给我一个解决办法吗
public Boolean checkHit(Ray myRay){
.
.
.
}
谢谢平面可以由单位法向量
(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)
你可以在这里找到你的答案:@SlySherZ谢谢你的回复(我看到的链接),但我不理解,也无法应用于我的问题。你知道三点定义一个平面,而不是四点。我知道,但我能写它吗?同样在最一般的情况下,
az
,bz
,cz
和dz
都不是零。必须从四个点中选择三个点来定义一个平面,然后为下一个平面选择另外三个点。