2010-05-31 16 views
0

有誰知道ddx和ddy值在AABB射線相交算法中做了什麼?從以下網站採取http://www.blitzbasic.com/codearcs/codearcs.php?code=1029(如下所示)。在這個AABB射線相交算法中,ddx和ddy值會做什麼?

Local txmin#,txmax#,tymin#,tymax# 

// rox, rdx are the ray origin on the x axis, and ray delta on the x axis ... y-axis is roy and rdy 

Local ddx# =1.0/(rox-rdx) 
Local ddy# =1.0/(roy-rdy) 

If ddx >= 0 
    txmin = (bminx - rox) * ddx 
    txmax = (bmaxx - rox) * ddx 
Else 
    txmin = (bmaxx - rox) * ddx 
    txmax = (bminx - rox) * ddx 
EndIf 

If ddy >= 0 
    tymin = (bminy - roy) * ddy 
    tymax = (bmaxy - roy) * ddy 
Else 
    tymin = (bmaxy - roy) * ddy 
    tymax = (bminy - roy) * ddy 
EndIf 

If ((txmin > tymax) Or (tymin > txmax)) Return 0 

If (tymin > txmin) txmin = tymin 
If (tymax < txmax) txmax = tymax 

Local tzmin#,tzmax# 
Local ddz# =1.0/(roz-rdz) 

If ddz >= 0 
    tzmin = (bminz - roz) * ddz 
    tzmax = (bmaxz - roz) * ddz 
Else 
    tzmin = (bmaxz - roz) * ddz 
    tzmax = (bminz - roz) * ddz 
EndIf 

If (txmin > tzmax) Or (tzmin > txmax) Return 0 

Return 1 
+0

網址不完整。請更正它 – kikito 2010-05-31 23:22:32

+0

固定的URL;使用Google搜索並不難。 – Ricket 2010-06-02 00:57:07

回答

0

(rox-rdx,roy-rdy)是從目標點到射線的原點的矢量。 ddx和ddy是這兩個座標的倒數。

反演被用作預計算,以便只需要使用乘法(通過這些反轉)而不是在函數的其餘部分中使用乘法。計算機比分割計算乘法運算更快。