86 uint8 inDecDegreesWhole,
88 double inDecSeconds) :
89 ra_(inRaHours, inRaMinutes, inRaSeconds),
90 dec_(inSign, inDecDegreesWhole, inDecMinutes, inDecSeconds)
130 if (inCartesianVector.
size() != 3)
135 x_ = inCartesianVector[0];
136 y_ = inCartesianVector[1];
137 z_ = inCartesianVector[2];
167 double x() const noexcept
177 double y() const noexcept
187 double z() const noexcept
237 return std::acos(
dot(
xyz(), inOtherCoordinate.
xyz()).item());
250 if (inVector.
size() != 3)
265 std::string returnStr;
266 returnStr = ra_.
str();
267 returnStr += dec_.
str();
268 returnStr +=
"Cartesian = " +
xyz().
str();
289 return ra_ == inRhs.ra_ && dec_ == inRhs.dec_;
301 return !(*
this == inRhs);
314 inStream << inCoord.
str();
329 void cartesianToPolar() noexcept
331 double degreesRa =
rad2deg(std::atan2(y_, x_));
339 const double degreesDec =
rad2deg(std::asin(z_ / r));
340 dec_ = Dec(degreesDec);
346 void polarToCartesian() noexcept
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition: Error.hpp:36
size_type size() const noexcept
Definition: NdArrayCore.hpp:4105
NdArray< dtype > flatten() const
Definition: NdArrayCore.hpp:2648
std::string str() const
Definition: NdArrayCore.hpp:4162
Holds a full coordinate object.
Definition: Coordinate.hpp:51
NdArray< double > xyz() const
Definition: Coordinate.hpp:197
std::string str() const
Definition: Coordinate.hpp:263
double radianSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:235
double z() const noexcept
Definition: Coordinate.hpp:187
double degreeSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:223
Coordinate(const NdArray< double > &inCartesianVector)
Definition: Coordinate.hpp:128
double y() const noexcept
Definition: Coordinate.hpp:177
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:101
bool operator!=(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:299
bool operator==(const Coordinate &inRhs) const noexcept
Definition: Coordinate.hpp:287
Coordinate(double inRaDegrees, double inDecDegrees)
Definition: Coordinate.hpp:64
double degreeSeperation(const Coordinate &inOtherCoordinate) const
Definition: Coordinate.hpp:210
Coordinate(double inX, double inY, double inZ) noexcept
Definition: Coordinate.hpp:115
friend std::ostream & operator<<(std::ostream &inStream, const Coordinate &inCoord)
Definition: Coordinate.hpp:312
const Dec & dec() const noexcept
Definition: Coordinate.hpp:147
const RA & ra() const noexcept
Definition: Coordinate.hpp:157
double x() const noexcept
Definition: Coordinate.hpp:167
double radianSeperation(const NdArray< double > &inVector) const
Definition: Coordinate.hpp:248
void print() const
Definition: Coordinate.hpp:275
Holds a Declination object.
Definition: Dec.hpp:55
std::string str() const
Definition: Dec.hpp:170
double degrees() const noexcept
Definition: Dec.hpp:120
Holds a right ascension object.
Definition: RA.hpp:47
std::string str() const
Definition: RA.hpp:146
double degrees() const noexcept
Definition: RA.hpp:106
Sign
Struct Enum for positive or negative Dec angle.
Definition: Dec.hpp:47
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