46 lines
1.0 KiB
C
46 lines
1.0 KiB
C
|
#ifndef COORDINATE_H
|
||
|
#define COORDINATE_H
|
||
|
|
||
|
#include <string>
|
||
|
|
||
|
class Angle
|
||
|
{
|
||
|
public:
|
||
|
enum class AngularMeasure
|
||
|
{
|
||
|
Radian,
|
||
|
Degree
|
||
|
};
|
||
|
|
||
|
enum class OutputForm
|
||
|
{
|
||
|
Degrees,
|
||
|
Minutes,
|
||
|
Seconds,
|
||
|
Radians
|
||
|
};
|
||
|
|
||
|
Angle();
|
||
|
Angle(double value, AngularMeasure measure = AngularMeasure::Radian);
|
||
|
explicit Angle(const std::string &value, AngularMeasure measure = AngularMeasure::Radian);
|
||
|
double degreeValue() const;
|
||
|
double radianValue() const;
|
||
|
bool isNull() const;
|
||
|
void adjust0To360();
|
||
|
void adjust180To180();
|
||
|
void reverse();
|
||
|
std::string toString() const;
|
||
|
std::string toString(OutputForm format) const;
|
||
|
|
||
|
bool operator ==(const Angle &other) const;
|
||
|
bool operator !=(const Angle &other) const;
|
||
|
Angle operator +(const Angle &other) const;
|
||
|
Angle operator -(const Angle &other) const;
|
||
|
Angle &operator +=(const Angle &other);
|
||
|
Angle &operator -=(const Angle &other);
|
||
|
private:
|
||
|
double m_val;
|
||
|
};
|
||
|
|
||
|
#endif // COORDINATE_H
|