本篇只講解射線與平面有一個交點的求解。
已知條件,假設有射線,射線的起始點為O(origin),方向dir,有平面Plane,平面法線為N,平面上已知點P0,
開始求解,假設射線和平面的交點為P1,那麼點P1到點O的線段長度為d1,這個線段用向量表示為v1,那麼有
公式1:v1=d1*dir。
關鍵點來了,v1點乘平面法線N(v1·N),其含義就是v1投影到平面法向量上的值,這個值其實就等於射線起始點O到平面的最近距離,假設這個距離為d2,那麼有
公式2:v1·N=d2
結合公式1和公式2,得出 (d1*dir)·N=d2,射線的起始點O到平面交點P0的距離有
公式3:d1=d2/(dir·N),
現在就剩下d2這個未知數需要求解。
d2的求解,先求出射線起點O到平面上已知點P0的向量v2=P0-O,向量v2點乘N(平面法向量)的值就是射線到平面的最近距離,那麼有
公式4:v2·N=d2
公式5:(P0-O)·N=d2
從公式4中即可求出d2,把d2帶入公式3,就可以求出d1的值(也就是從射線起點O,沿著射線的方向,終點是射線與平面交點的線段長度),所以 射線與平面的交點就是 P1=O+d1*dir。
以上求解的是射線與超平面(就是射線與平面的交點總會在平面內),那麼延伸開來,射線與非超平面、射線與三角形的相交,下一篇將講述這個求解過程。