2014-09-30 52 views
0

我已經在JS中寫了一個非常原始的射線追蹤器,它通過從每個像素拍攝一條射線並檢查它是否與立方體相交僅渲染一個立方體。如果相交,則該像素設置爲白色,否則設爲黑色。JS Ray Tracer物體無限長

但是,對象始於正確的位置,但不是正確的尺寸。這是最好用圖片解釋:

raytracing attempt with one cube

我已經發布的代碼here但是,如果你運行它,它會如果你想加快速度,然後減少的數量需要很長的時間

function main_v 

迭代我認爲這個問題是與射線相交測試(intersect_b功能),但是我一直無法追查問題。交集功能是直接改編自here

+0

只是FYI你的小提琴給我'未捕獲的ReferenceError:main_v沒有定義'當我點擊按鈕 – 2014-10-01 19:57:15

回答

1

的一個問題是這樣的:

function c2p_p(r) { 
    return r.type == vType.Cartesian ? { 
     r: Math.sqrt(r.x^2 + r.y^2 + r.z^2), 
     theta: Math.acos(r.z/Math.sqrt(r.x^2 + r.y^2 + r.z^2)), 
     phi: Math.atan2(r.y/r.x), 
     type: vType.Polar 
    } : r 
} 

在JavaScript中,^操作是按位異或,不求冪。改爲寫r.x*r.x + r.y*r.y + r.z*r.z