2012-11-19 33 views
0

射線折射以及如何跟蹤環境類型?射線折射以及如何跟蹤環境類型?

如果我雷對象知道它是在環境?比如說是 空氣,玻璃還是其他?通過了解環境,我的意思是瞭解折射率。這樣,當它碰到一個表面時,我可以得到命中的表面折射率,並且我可以計算折射射線。

任何建議如何處理這件事,光線通過不同的環境中移動?

感謝

回答

0

表面應保持折射率,所以當你檢測線和麪之間的碰撞,你搶從表面對象的索引,做計算偏離根據計算結果的射線。如果該指數是全球的一個環境的一組對象,曲面對象可以有一個靜態引用到包含折射率,像這樣的環境:

class Surface { 
private: 
    Enviroment* pEnviroment; 
    ... 
}; 

Ray Ray::refract(const Surface& surface) { 
    double index = surface.getEnviroment()->getRefractionIndex(); 
    ... 
    // Do refraction calculation 
} 
+0

但是,這種方式你假設射線來自表面內的空氣? – user1796942

+0

因此,如果光線進入表面,我可以像你說的那樣使用折射率,但是如果光線從表面OUT出來,我想我可以使用折射率的倒數。 – user1796942

+0

或者,你可以使用正常的表面的知道它來自「上面」或「下面」的表面以及 – higuaro