84 uint8 inDecDegreesWhole,
86 double inDecSeconds) :
87 ra_(inRaHours, inRaMinutes, inRaSeconds),
88 dec_(inSign, inDecDegreesWhole, inDecMinutes, inDecSeconds)
128 if (inCartesianVector.
size() != 3)
133 x_ = inCartesianVector[0];
134 y_ = inCartesianVector[1];
135 z_ = inCartesianVector[2];
145 [[nodiscard]]
const Dec&
dec() const noexcept
155 [[nodiscard]]
const RA&
ra() const noexcept
165 [[nodiscard]]
double x() const noexcept
175 [[nodiscard]]
double y() const noexcept
185 [[nodiscard]]
double z() const noexcept
235 return std::acos(
dot(
xyz(), inOtherCoordinate.
xyz()).item());
248 if (inVector.
size() != 3)
261 [[nodiscard]] std::string
str()
const
263 std::string returnStr;
264 returnStr = ra_.
str();
265 returnStr += dec_.
str();
266 returnStr +=
"Cartesian = " +
xyz().
str();
287 return ra_ == inRhs.ra_ && dec_ == inRhs.dec_;
299 return !(*
this == inRhs);
312 inStream << inCoord.
str();
327 void cartesianToPolar()
329 double degreesRa =
rad2deg(std::atan2(y_, x_));
337 const double degreesDec =
rad2deg(std::asin(z_ / r));
338 dec_ = Dec(degreesDec);
344 void polarToCartesian() noexcept
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition: Error.hpp:37
size_type size() const noexcept
Definition: NdArrayCore.hpp:4415
self_type flatten() const
Definition: NdArrayCore.hpp:2770
std::string str() const
Definition: NdArrayCore.hpp:4473
Holds a full coordinate object.
Definition: Coordinate.hpp:49
NdArray< double > xyz() const
Definition: Coordinate.hpp:195
std::string str() const
Definition: Coordinate.hpp:261
double radianSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:233
double z() const noexcept
Definition: Coordinate.hpp:185
double degreeSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:221
Coordinate(const NdArray< double > &inCartesianVector)
Definition: Coordinate.hpp:126
double y() const noexcept
Definition: Coordinate.hpp:175
Coordinate(uint8 inRaHours, uint8 inRaMinutes, double inRaSeconds, Sign inSign, uint8 inDecDegreesWhole, uint8 inDecMinutes, double inDecSeconds)
Definition: Coordinate.hpp:80
Coordinate(const RA &inRA, const Dec &inDec) noexcept
Definition: Coordinate.hpp:99
bool operator!=(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:297
bool operator==(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:285
Coordinate(double inRaDegrees, double inDecDegrees)
Definition: Coordinate.hpp:62
double degreeSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:208
Coordinate(double inX, double inY, double inZ)
Definition: Coordinate.hpp:113
friend std::ostream & operator<<(std::ostream &inStream, const Coordinate &inCoord)
Definition: Coordinate.hpp:310
const Dec & dec() const noexcept
Definition: Coordinate.hpp:145
const RA & ra() const noexcept
Definition: Coordinate.hpp:155
double x() const noexcept
Definition: Coordinate.hpp:165
double radianSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:246
void print() const
Definition: Coordinate.hpp:273
Holds a Declination object.
Definition: Dec.hpp:53
std::string str() const
Definition: Dec.hpp:168
double degrees() const noexcept
Definition: Dec.hpp:118
Holds a right ascension object.
Definition: RA.hpp:45
std::string str() const
Definition: RA.hpp:144
double degrees() const noexcept
Definition: RA.hpp:104
Definition: Coordinate.hpp:45
Sign
Struct Enum for positive or negative Dec angle.
Definition: Dec.hpp:45
constexpr dtype sqr(dtype inValue) noexcept
Definition: sqr.hpp:42
NdArray< dtype > dot(const NdArray< dtype > &inArray1, const NdArray< dtype > &inArray2)
Definition: dot.hpp:47
constexpr auto deg2rad(dtype inValue) noexcept
Definition: deg2rad.hpp:47
auto sin(dtype inValue) noexcept
Definition: sin.hpp:49
auto cos(dtype inValue) noexcept
Definition: cos.hpp:49
constexpr auto rad2deg(dtype inValue) noexcept
Definition: rad2deg.hpp:48
auto sqrt(dtype inValue) noexcept
Definition: sqrt.hpp:48
std::uint8_t uint8
Definition: Types.hpp:42