Skip to content

Commit bfc764f

Browse files
committed
Return Inf for rs instead of zero on error when raytracing
1 parent 6add264 commit bfc764f

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/metrics/Kerr/misc.jl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,17 +1595,18 @@ end
15951595
if (rh == r3)
15961596
rh += eps(T)
15971597
end
1598+
err_return = (T(Inf), false, false)
15981599
x2_s = abs((rh - r4) / (rh - r3) * r31 / r41)
15991600
coef = 2 / real(r31 * r42)
16001601
Ir_s = !(x2_s < one(T)) ? zero(T) : coef * JacobiElliptic.F(asin(x2_s), k)
16011602

16021603
fo = I0_inf(pix)
16031604

1604-
r4 < rh && τ > (fo - Ir_s) && return zero(T), false, false# invalid case2
1605+
r4 < rh && τ > (fo - Ir_s) && return err_return# invalid case2
16051606

16061607
X2 = (r31 * r42) * (fo - τ) / 2
16071608
if τ > 2fo
1608-
return zero(T), false, false
1609+
return err_return
16091610
end
16101611
sn = r41 * JacobiElliptic.sn(X2, k)^2
16111612
return (r31 * r4 - r3 * sn) / (r31 - sn), X2 > zero(T), true
@@ -1617,7 +1618,7 @@ end
16171618
r21, r31, r32, r41, r42, _ = _get_root_diffs(radial_roots...)
16181619
r1, r2, r21 = real.((r1, r2, r21))
16191620

1620-
1621+
err_return = (T(Inf), false, false)
16211622
fo = I0_inf(pix)
16221623
A = abs(r32 * r42)
16231624
B = abs(r31 * r41)
@@ -1626,11 +1627,11 @@ end
16261627
x3_s = clamp(((one(T) - temprat) / (one(T) + temprat)), -one(T), one(T))
16271628
coef = one(T) * inv(A * B)
16281629
Ir_s = coef * JacobiElliptic.F((acos(x3_s)), k)
1629-
τ > (fo - Ir_s) && return zero(T), false, false
1630+
τ > (fo - Ir_s) && return err_return
16301631

16311632
X3 = (A * B) * real(fo - τ)
16321633
if X3 < zero(T)
1633-
return zero(T), false, false
1634+
return err_return
16341635
end
16351636
cn = JacobiElliptic.cn(X3, k)
16361637
num = -A * r1 + B * r2 + (A * r1 + B * r2) * cn
@@ -1651,16 +1652,13 @@ end
16511652
D = sqrt((a1+a2)^2 + (b1-b2)^2)
16521653
k4 = 4C * D / (C + D)^2
16531654

1654-
1655-
k4 = T(4) * C * D / (C + D)^2
1656-
16571655
go = max((T(4)a2^2 - (C - D)^2) / ((C + D)^2 - T(4)a2^2), zero(T))
16581656
x4_s = (rh + b1) / a2
16591657
coef = 2 / (C + D)
16601658
Ir_s = coef * JacobiElliptic.F(atan(x4_s) + atan(go), k4)
16611659

16621660
fo = I0_inf(pix)
1663-
τ > (fo - Ir_s) && return zero(T), false, false
1661+
τ > (fo - Ir_s) && return (T(Inf), false, false)
16641662

16651663
X4 = (C + D) / T(2) * (fo - τ)
16661664
num = go - JacobiElliptic.sc(X4, k4)

0 commit comments

Comments
 (0)