83 uint8 inDecDegreesWhole,
uint8 inDecMinutes,
double inDecSeconds) :
84 ra_(inRaHours, inRaMinutes, inRaSeconds),
85 dec_(inSign, inDecDegreesWhole, inDecMinutes, inDecSeconds)
125 if (inCartesianVector.
size() != 3)
130 x_ = inCartesianVector[0];
131 y_ = inCartesianVector[1];
132 z_ = inCartesianVector[2];
162 double x() const noexcept
172 double y() const noexcept
182 double z() const noexcept
232 return std::acos(
dot(
xyz(), inOtherCoordinate.
xyz()).item());
245 if (inVector.
size() != 3)
260 std::string returnStr;
261 returnStr = ra_.
str();
262 returnStr += dec_.
str();
263 returnStr +=
"Cartesian = " +
xyz().
str();
284 return ra_ == inRhs.ra_ && dec_ == inRhs.dec_;
296 return !(*
this == inRhs);
309 inStream << inCoord.
str();
324 void cartesianToPolar() noexcept
326 double degreesRa =
rad2deg(std::atan2(y_, x_));
334 const double degreesDec =
rad2deg(std::asin(z_ / r));
335 dec_ = Dec(degreesDec);
341 void polarToCartesian() noexcept
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition: Error.hpp:36
size_type size() const noexcept
Definition: NdArrayCore.hpp:4296
NdArray< dtype > flatten() const
Definition: NdArrayCore.hpp:2759
std::string str() const
Definition: NdArrayCore.hpp:4356
Holds a full coordinate object.
Definition: Coordinate.hpp:51
NdArray< double > xyz() const
Definition: Coordinate.hpp:192
std::string str() const
Definition: Coordinate.hpp:258
double radianSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:230
double z() const noexcept
Definition: Coordinate.hpp:182
double degreeSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:218
Coordinate(const NdArray< double > &inCartesianVector)
Definition: Coordinate.hpp:123
double y() const noexcept
Definition: Coordinate.hpp:172
Coordinate(uint8 inRaHours, uint8 inRaMinutes, double inRaSeconds, Sign inSign, uint8 inDecDegreesWhole, uint8 inDecMinutes, double inDecSeconds)
Definition: Coordinate.hpp:82
Coordinate(const RA &inRA, const Dec &inDec) noexcept
Definition: Coordinate.hpp:96
bool operator!=(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:294
bool operator==(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:282
Coordinate(double inRaDegrees, double inDecDegrees)
Definition: Coordinate.hpp:64
double degreeSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:205
Coordinate(double inX, double inY, double inZ) noexcept
Definition: Coordinate.hpp:110
friend std::ostream & operator<<(std::ostream &inStream, const Coordinate &inCoord)
Definition: Coordinate.hpp:307
const Dec & dec() const noexcept
Definition: Coordinate.hpp:142
const RA & ra() const noexcept
Definition: Coordinate.hpp:152
double x() const noexcept
Definition: Coordinate.hpp:162
double radianSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:243
void print() const
Definition: Coordinate.hpp:270
Holds a Declination object.
Definition: Dec.hpp:51
std::string str() const
Definition: Dec.hpp:166
double degrees() const noexcept
Definition: Dec.hpp:116
Holds a right ascension object.
Definition: RA.hpp:47
std::string str() const
Definition: RA.hpp:145
double degrees() const noexcept
Definition: RA.hpp:105
Sign
Struct Enum for positive or negative Dec angle.
Definition: Dec.hpp:46
constexpr dtype sqr(dtype inValue) noexcept
Definition: sqr.hpp:44
Definition: Coordinate.hpp:45
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