求在三维空间中线和面的交点,采用向量的计算方法,图解比较容易理解,我参考的《计算机图形学》(OpenGL版)就直接截图啦
最后一点代码仅供参考
//PL射线端点,PP平面一点,e射线单位向量,q平面信息,P返回交点
void CTriObject::CalculateLineAndPlane(double PL[],double PP[],double e[],double* q,double* P)
{
double t;
if((q[1]*e[0]+q[2]*e[1]+q[3]*e[2])==0)
{
return;
}
else
{
t=(q[1]*(PP[0]-PL[0])+q[2]*(PP[1]-PL[1])+q[3]*PP[2])/(q[1]*e[0]+q[2]*e[1]+q[3]*e[2]);
P[0]=PL[0]+e[0]*t;
P[1]=PL[1]+e[1]*t;
P[2]=e[2]*t;
}
}