問題背景:
很早就覺得數學很重要,但斌沒有靜下心來好好看~ 最近重寫都D3D框架的結構,打算從基礎類一個個寫起。。
今天寫到射線的相交,在射線與平面相交的判斷上,由于射線的的單方向性,所以可能存在射線的反向延長線和平
面相交,但是正真的射線沒 有 和平面相交,所以設:
平面的單位法向量:N,;
射線的起始點:Origin
射線的方向:Dir
如果Dir,N的點積為正 且Origin在平面的背面,或Origin在平面的正面,且Dir,N的點積為負,則他們相交
其他情況則不想交
但關鍵是Origin在平面的哪一面該怎么算呢?下面來小證一下
證明:
N,Origin,Dir均為矢量,其他為標量
平面方程為 N(x, y, z) = D;
射線方程為 P(t) = Origin + Dir*t;
N為平面的單位法向量,
求N與Origin的點積
N•Origin = |N| * |Origin|cosF
因為N為單位向量 則求出來的值為Origin向量在N上的投影且有方向
(這個有向長度相于當該平面經過原點時的有向長度,既D為0時),(D的幾何意義是平面到原點的有向距離,
既D為負則 原點在平面背面,反之在反面)
所以N•Origin + D為最后Origin在正真的有偏移的N上的投影的有向長度,為負則在背
面,為正則在正面
貌似講的不怎么清楚 -_- ~~~