2.2 與球體相交-幾何解


  現在,一個簡單的球體相交例子已經被概述。這里有一些關於計算效率的概念。

  一個普遍的看法是,應該盡可能地避免使用平方根函數。檢查計時:sqrt()耗時通常是乘法的15~30倍。類似的,除法比乘法耗時更長,所以除法可以用乘以逆來代替。

  另一個觀察的結果是,計算往往會被縮短。在球體情況下,許多測試檢測了球體相交問題,這些測試的目的是避免非必要的計算。

  通過研究幾何,問題的其他性質就變得明了了。

  例如,光線通常指向球外,這種不相交。通過研究這個可能,我們發現了另一種測試光線和球面相交的策略。

    1) 找出光線原點是否在球面外

    2) 找出光線最接近球體中心的地方

    3) 如果光線在球體外且指向遠離球的方向,那么光線一定會錯過球體

    4) 另外,求出離球體面最近的距離的平方

    5) 如果值為負,光線會錯過球面

    6) 另外,從上面找出射線/表面距離

    7) 計算觸點坐標[xi yi zi]

    8) 計算交點法線

  該策略將方程(A5)和(A6)分解成更短的表達式,並根據需要進行計算。條件3,5將檢測射線偏離球面狀況。並允許提前停止。

  以上內容將被充實和解釋。從原始的射線(A1)和球面(A2)方程開始。首先,通過計算確定光線的來源是否在球內。

  

  如果L2oc<Sr2,則光源在球內。若L2oc>=Sr2,則光源點在球外或者球內。然后有可能不與球相交。效率起見,可以提前計算並保存Sr2

  注意,起源於球體的光線不算擊中球體。這是ray tracing的標准,反擊和折射來自之前的相交處。在"精度問題"章節會討論如何規避。

  在任何情況下,下一步都是計算球心到離他最近的線點的距離。這就等於求出射線與垂直於它的平面(穿過球心)的交點。

  

  tca<0,光線在球后。對於來自外部的光線,這意味着光線不能擊中球體,另一種說法是,tca<0,射線指向原理球心,如圖2

  

  一旦tca確定,從垂直點到球面的距離也就確定了。

  

  

  

  方程的幾何意義展示在圖3.這個計算引出了另一個關於關於光線是否擊中球體的測試。如果t2hc<0,光線會錯過球面,當然,以上都是建立在光源不在球內的基礎上。

  

  

  使用A7,A8之前會使用到前面的方程。

  總結:

    1,找出球心到光源的距離

    2,找出球心最近的光源上的點

    3,測試光線是否在球外且指向球外

    4,找出thc

    5,判斷thc2是否為負

    6,計算交距t

    7,找出交點

    8,計算交點和法線

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM