设直线上一点 p,以及其方向 dir
则直线公式可写作 p+t*dir
设平面法向量为nml,平面上一点 p0
方法一:
直线与平面相交时,必满足
dot ( (p+t*dir-p0),nml)=0
即
dot (p-p0,nml)+t*dot(dir,nml)=0
于是得
t= -dot(p-p0,nml)/dot(dir,nml)
方法二:
利用平面的法线nml和平面内一点构造一个Matrix4,TM
然后把点p和dir都转换到TM空间中,那么当y坐标为0时,即在该平面上。
设P转换后的坐标为_p,dir转换为_dir.
则有
_p.y+t*_dir.y=0;
得出
t=-_p.y/_dir.y;
newp=p+t*dir;
在自己使用MAXScript编写的脚本中使用了这一方法