diff --git a/src/cartesian.jl b/src/cartesian.jl index 30d3d63..0a21b35 100644 --- a/src/cartesian.jl +++ b/src/cartesian.jl @@ -1,4 +1,4 @@ -struct CartesianCoords{TC<:AbstractSkyCoords, TF<:AbstractFloat} <: AbstractSkyCoords +struct CartesianCoords{TC<:AbstractSkyCoords, TF<:Real} <: AbstractSkyCoords vec::SVector{3,TF} end diff --git a/src/types.jl b/src/types.jl index 83693cc..8eaf6d1 100644 --- a/src/types.jl +++ b/src/types.jl @@ -17,13 +17,13 @@ This is the current standard adopted by the International Astronomical Union not - `ra` - Right ascension in radians (0, 2π) - `dec` - Declination in radians (-π/2, π/2) """ -struct ICRSCoords{T<:AbstractFloat} <: AbstractSkyCoords +struct ICRSCoords{T<:Real} <: AbstractSkyCoords ra::T dec::T - ICRSCoords{T}(ra, dec) where {T<:AbstractFloat} = new(mod2pi(ra), dec) + ICRSCoords{T}(ra, dec) where {T<:Real} = new(mod2pi(ra), dec) end -ICRSCoords(ra::T, dec::T) where {T<:AbstractFloat} = ICRSCoords{T}(ra, dec) -ICRSCoords(ra::Real, dec::Real) = ICRSCoords(promote(float(ra), float(dec))...) +ICRSCoords(ra::T, dec::T) where {T<:Real} = ICRSCoords{float(T)}(ra, dec) +ICRSCoords(ra::Real, dec::Real) = ICRSCoords(promote(ra, dec)...) ICRSCoords(c::T) where {T<:AbstractSkyCoords} = convert(ICRSCoords, c) ICRSCoords{F}(c::T) where {F,T<:AbstractSkyCoords} = convert(ICRSCoords{F}, c) @@ -38,13 +38,13 @@ This coordinate system is defined based on the projection of the Milky Way galax - `l` - Galactic longitude in radians (-π, π) - `b` - Galactic latitude in radians (-π/2, π/2) """ -struct GalCoords{T<:AbstractFloat} <: AbstractSkyCoords +struct GalCoords{T<:Real} <: AbstractSkyCoords l::T b::T - GalCoords{T}(l, b) where {T<:AbstractFloat} = new(mod2pi(l), b) + GalCoords{T}(l, b) where {T<:Real} = new(mod2pi(l), b) end -GalCoords(l::T, b::T) where {T<:AbstractFloat} = GalCoords{T}(l, b) -GalCoords(l::Real, b::Real) = GalCoords(promote(float(l), float(b))...) +GalCoords(l::T, b::T) where {T<:Real} = GalCoords{float(T)}(l, b) +GalCoords(l::Real, b::Real) = GalCoords(promote(l, b)...) GalCoords(c::T) where {T<:AbstractSkyCoords} = convert(GalCoords, c) GalCoords{F}(c::T) where {F,T<:AbstractSkyCoords} = convert(GalCoords{F}, c) @@ -60,13 +60,13 @@ The supergalactic plane as so-far observed is more or less perpendicular to the - `l` - SuperGalCoords longitude in radians (-π, π) - `b` - SuperGalCoords latitude in radians (-π/2, π/2) """ -struct SuperGalCoords{T<:AbstractFloat} <: AbstractSkyCoords +struct SuperGalCoords{T<:Real} <: AbstractSkyCoords l::T b::T - SuperGalCoords{T}(l, b) where {T<:AbstractFloat} = new(mod2pi(l), b) + SuperGalCoords{T}(l, b) where {T<:Real} = new(mod2pi(l), b) end -SuperGalCoords(l::T, b::T) where {T<:AbstractFloat} = SuperGalCoords{T}(l, b) -SuperGalCoords(l::Real, b::Real) = SuperGalCoords(promote(float(l), float(b))...) +SuperGalCoords(l::T, b::T) where {T<:Real} = SuperGalCoords{float(T)}(l, b) +SuperGalCoords(l::Real, b::Real) = SuperGalCoords(promote(l, b)...) SuperGalCoords(c::T) where {T<:AbstractSkyCoords} = convert(SuperGalCoords, c) SuperGalCoords{F}(c::T) where {F,T<:AbstractSkyCoords} = convert(SuperGalCoords{F}, c) @@ -82,14 +82,13 @@ This coordinate system maps the celestial sphere based on a geocentric observer. - `ra` - Right ascension in radians (0, 2π) - `dec` - Declination in radians (-π/2, π/2) """ -struct FK5Coords{e,T<:AbstractFloat} <: AbstractSkyCoords +struct FK5Coords{e,T<:Real} <: AbstractSkyCoords ra::T dec::T - FK5Coords{e,T}(ra, dec) where {T<:AbstractFloat,e} = new(mod2pi(ra), dec) + FK5Coords{e,T}(ra, dec) where {T<:Real,e} = new(mod2pi(ra), dec) end -FK5Coords{e}(ra::T, dec::T) where {e,T<:AbstractFloat} = FK5Coords{e,T}(ra, dec) -FK5Coords{e}(ra::Real, dec::Real) where {e} = - FK5Coords{e}(promote(float(ra), float(dec))...) +FK5Coords{e}(ra::T, dec::T) where {e,T<:Real} = FK5Coords{e,float(T)}(ra, dec) +FK5Coords{e}(ra::Real, dec::Real) where {e} = FK5Coords{e}(promote(ra, dec)...) FK5Coords{e}(c::T) where {e,T<:AbstractSkyCoords} = convert(FK5Coords{e}, c) FK5Coords{e,F}(c::T) where {e,F,T<:AbstractSkyCoords} = convert(FK5Coords{e,F}, c) constructorof(::Type{<:FK5Coords{e}}) where {e} = FK5Coords{e} @@ -106,13 +105,13 @@ This coordinate system is geocentric with the ecliptic plane as the xy-plane wit - `lon` - Longitude in radians (0, 2π) - `lat` - Latitude in radians (-π/2, π/2) """ -struct EclipticCoords{e,T<:AbstractFloat} <: AbstractSkyCoords +struct EclipticCoords{e,T<:Real} <: AbstractSkyCoords lon::T lat::T - EclipticCoords{e,T}(lon, lat) where {e,T<:AbstractFloat} = new(mod2pi(lon), lat) + EclipticCoords{e,T}(lon, lat) where {e,T<:Real} = new(mod2pi(lon), lat) end -EclipticCoords{e}(lon::T, lat::T) where {e,T<:AbstractFloat} = EclipticCoords{e,T}(lon, lat) -EclipticCoords{e}(lon::Real, lat::Real) where {e} = EclipticCoords{e}(promote(float(lon), float(lat))...) +EclipticCoords{e}(lon::T, lat::T) where {e,T<:Real} = EclipticCoords{e,float(T)}(lon, lat) +EclipticCoords{e}(lon::Real, lat::Real) where {e} = EclipticCoords{e}(promote(lon, lat)...) EclipticCoords{e}(c::AbstractSkyCoords) where {e} = convert(EclipticCoords{e}, c) EclipticCoords{e,F}(c::AbstractSkyCoords) where {e,F} = convert(EclipticCoords{e,F}, c) constructorof(::Type{<:EclipticCoords{e}}) where {e} = EclipticCoords{e}