139 lines
2.7 KiB
C++
139 lines
2.7 KiB
C++
#ifndef COORD_H_
|
|
#define COORD_H_
|
|
|
|
class CoordGeodetic {
|
|
public:
|
|
|
|
CoordGeodetic()
|
|
: lat_(0.0), lon_(0.0), alt_(0.0) {
|
|
}
|
|
|
|
/*
|
|
* radians
|
|
*/
|
|
CoordGeodetic(double latitude, double longitude, double altitude)
|
|
: lat_(latitude), lon_(longitude), alt_(altitude) {
|
|
}
|
|
|
|
CoordGeodetic(const CoordGeodetic& g);
|
|
|
|
virtual ~CoordGeodetic() {
|
|
};
|
|
|
|
CoordGeodetic & operator =(const CoordGeodetic& b);
|
|
bool operator ==(const CoordGeodetic& b) const;
|
|
bool operator !=(const CoordGeodetic& b) const;
|
|
|
|
void SetLatitude(const double latitude) {
|
|
lat_ = latitude;
|
|
}
|
|
|
|
void SetLongitude(const double longitude) {
|
|
lon_ = longitude;
|
|
}
|
|
|
|
void SetAltitude(const double altitude) {
|
|
alt_ = altitude;
|
|
}
|
|
|
|
double GetLatitude() const {
|
|
return lat_;
|
|
}
|
|
|
|
double GetLongitude() const {
|
|
return lon_;
|
|
}
|
|
|
|
double GetAltitude() const {
|
|
return alt_;
|
|
}
|
|
|
|
private:
|
|
/*
|
|
* radians (north positive, south negative)
|
|
*/
|
|
double lat_;
|
|
/*
|
|
* radians (east positive, west negative)
|
|
*/
|
|
double lon_;
|
|
/*
|
|
* kilometers
|
|
*/
|
|
double alt_;
|
|
};
|
|
|
|
class CoordTopographic {
|
|
public:
|
|
|
|
CoordTopographic()
|
|
: azimuth_(0.0), elevation_(0.0), range_(0.0), range_rate_(0.0) {
|
|
}
|
|
|
|
CoordTopographic(double azimuth, double elevation, double range, double range_rate)
|
|
: azimuth_(azimuth), elevation_(elevation), range_(range), range_rate_(range_rate) {
|
|
}
|
|
|
|
CoordTopographic(const CoordTopographic& b);
|
|
|
|
virtual ~CoordTopographic() {
|
|
};
|
|
|
|
CoordTopographic & operator =(const CoordTopographic& b);
|
|
bool operator ==(const CoordTopographic& b) const;
|
|
bool operator !=(const CoordTopographic& b) const;
|
|
|
|
void SetAzimuth(const double azimuth) {
|
|
azimuth_ = azimuth;
|
|
}
|
|
|
|
void SetElevation(const double elevation) {
|
|
elevation_ = elevation;
|
|
}
|
|
|
|
void SetRange(const double range) {
|
|
range_ = range;
|
|
}
|
|
|
|
void SetRangeRate(const double range_rate) {
|
|
range_rate_ = range_rate;
|
|
}
|
|
|
|
double GetAzimuth() const {
|
|
return azimuth_;
|
|
}
|
|
|
|
double GetElevation() const {
|
|
return elevation_;
|
|
}
|
|
|
|
double GetRange() const {
|
|
return range_;
|
|
}
|
|
|
|
double GetRangeRate() const {
|
|
return range_rate_;
|
|
}
|
|
|
|
private:
|
|
/*
|
|
* radians
|
|
*/
|
|
double azimuth_;
|
|
/*
|
|
* radians
|
|
*/
|
|
double elevation_;
|
|
/*
|
|
* kilometers
|
|
*/
|
|
double range_;
|
|
/*
|
|
* kilometers / second
|
|
*/
|
|
double range_rate_;
|
|
};
|
|
|
|
#endif
|
|
|