If the input of cart2spher is $(0,0,0)$ under Cartesian, it returns NaN for the field $\cos\theta$, which leads to a state that cannot be recognised by function evaluate. Can we map Cartesian $(0,0,0)$ to something like $(0,1,0,1,0)$ under the spherical coordinate system (though we can choose both angles freely...).
e.g., change it to
function cart2spher(R::AbstractVector)
@assert length(R) == 3
r = norm(R)
if r == 0
return SphericalCoords(0.0, 1.0, 0.0, 1.0, 0.0)
end
φ = atan(R[2], R[1])
sinφ, cosφ = sincos(φ)
cosθ = R[3] / r
sinθ = sqrt(R[1]^2+R[2]^2) / r
return SphericalCoords(r, cosφ, sinφ, cosθ, sinθ)
end
If the input of cart2spher is $(0,0,0)$ under Cartesian, it returns NaN for the field $\cos\theta$, which leads to a state that cannot be recognised by function
evaluate
. Can we map Cartesian $(0,0,0)$ to something like $(0,1,0,1,0)$ under the spherical coordinate system (though we can choose both angles freely...).e.g., change it to