18 static constexpr double precision = 0.01;
24 StarCoord(
double x,
double y )
28 StarCoord(
const StarCoord& other )
32 double distanceKkm(
const StarCoord& other )
const {
33 double dx = deltaX_kkm( other );
34 double dy = deltaY_kkm( other );
35 return std::sqrt( dx*dx + dy*dy );
38 double deltaX_kkm(
const StarCoord& other )
const {
42 double deltaY_kkm(
const StarCoord& other )
const {
47 double lenght()
const {
48 return std::fabs( std::sqrt( _x*_x + _y*_y ) );
52 void operator += (
const StarCoord &b) {
57 const StarCoord &operator =(
const StarCoord &b) {
63 double x()
const {
return _x; }
64 double y()
const {
return _y; }
65 double x(
double x ) {
69 double y(
double y ) {
74 return (_x == NAN) || (_y == NAN);
77 friend void to_json(nlohmann::json& j,
const StarCoord& s) {
84 friend void from_json(
const nlohmann::json& j, StarCoord& s) {
85 s.x(j.at(
"x").get<
double>());
86 s.y(j.at(
"y").get<
double>());
89 friend StarCoord operator - (
const StarCoord &a,
const StarCoord &b) {
90 return StarCoord( a.x() - b.x(), a.y() - b.y() );
93 friend StarCoord operator + (
const StarCoord &a,
const StarCoord &b) {
94 return StarCoord( a.x() + b.x(), a.y() + b.y() );
97 friend bool operator < (
const StarCoord &a,
const StarCoord &b) {
102 return a.y() < b.y();
105 friend bool operator == (
const StarCoord &a,
const StarCoord &b) {
106 double delta_x = std::fabs( a.x() - b.x() );
107 double delta_y = std::fabs( a.y() - b.y() );
108 if ( ( delta_x < StarCoord::precision ) &&
109 ( delta_y < StarCoord::precision ) )
114 friend bool operator != (
const StarCoord &a,
const StarCoord &b) {
115 double delta_x = std::fabs( a.x() - b.x() );
116 double delta_y = std::fabs( a.y() - b.y() );
117 if ( ( delta_x > StarCoord::precision ) ||
118 ( delta_y > StarCoord::precision ) )