Ogre Torque 基礎類plane簡單釋疑

2022-04-16 05:16:04 字數 630 閱讀 8451

ogre 或torque都沒有用點法式儲存平面,而是用了兩個成員normal,d

normal不用多說,是平面的法向量,那麼d是什麼呢?

在torque3d的mplane.h的函式

inline void planef::setpoint(const point3f &p)

顯然d = -(p.x * x + p.y * y + p.z * z);

這裡不具體畫圖,只敘述下:從3d座標軸原點o,沿著normal方向作一條射線,與平面m的交於點p,連線線段op,則-d等於線段op的長度,也就是d=向量op的模的相反數。

證明思路:向量點乘--投影

明白了d的含義,求平面外一點q與平面的distance函式就很好理解了:

inline f32 planef::disttoplane( const point3f& cp ) const

因為法向量n(x,y,z)與平面外一點cp的點乘就是ocp的長度,加上d就是點到平面的距離。

其他的函式都很簡單,比如判斷點在平面的哪一側,都是用到前面的結果

inline planef::side planef::whichside(const point3f& cp) const

不知道大家看明白了沒,真的很簡單,畫個圖就出來了。

C 基礎類 Date類

生活中經常用到 查詢兩個日期相差多少天 多少天之後是哪一天 等等 這些問題都可以用日期類實現 date int t year,int t month,int t day m year t year m month t month m day t day date const date date da...

基礎類庫積累 Random類

這個random類取的隨機數,和以前寫的random.next 有點不一樣 獲取隨機數 隨機數的最小值 隨機數的最大值 隨機數 public static int getrandomnumber int minvalue,int maxvalue 在實際開發過程中,我們會遇到很多取隨機數的地方,有時...

基礎類庫積累 ExeclHelper類

相信大家都玩過npoi這個第三方元件,我就分享一下我平時使用的工具類,如果有不好的地方,請賜教!npoi是乙個開源的c 讀寫excel word等微軟ole2元件文件的專案。控制台 命令 install package npoi輸入命令之後,回車即安裝 安裝npoi之後,程式中就已經把npoi服務整...