Isis 3.0 Developer's Reference (
API
)
Home
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Angle.h
Go to the documentation of this file.
1
#ifndef Angle_h
2
#define Angle_h
3
4
#include <QtGlobal>
5
28
#include <QGlobalStatic>
29
30
class
QString;
31
32
namespace
Isis {
33
58
class
Angle
{
59
60
public
:
62
enum
Units
{
69
Degrees
,
76
Radians
77
};
78
79
Angle
();
80
Angle
(
double
angle
,
Units
unit);
81
Angle
(
const
Angle
&
angle
);
82
Angle
(QString
angle
);
83
84
virtual
~Angle
();
85
86
// Class member operator functions
87
bool
isValid
()
const
;
88
static
Angle
fullRotation
();
89
96
Angle
&
operator=
(
const
Angle
& angle2) {
97
setAngle
(angle2.
radians
(),
Radians
);
return
*
this
;
98
}
99
100
101
Angle
operator+
(
const
Angle
& angle2)
const
;
102
Angle
operator-
(
const
Angle
& angle2)
const
;
103
Angle
operator*
(
double
value)
const
;
104
friend
Angle
operator *
(
double
mult,
Angle
angle
);
105
Angle
operator/
(
double
value)
const
;
106
double
operator/
(
Angle
value)
const
;
107
bool
operator<
(
const
Angle
& angle2)
const
;
108
bool
operator>
(
const
Angle
& angle2)
const
;
109
110
117
void
operator+=
(
const
Angle
& angle2) {
118
*
this
= *
this
+ angle2;
119
};
120
121
128
void
operator-=
(
const
Angle
& angle2) {
129
*
this
= *
this
- angle2;
130
};
131
132
139
Angle
operator*
(
int
value)
const
{
140
return
*
this
* (double)value;
141
}
142
143
150
void
operator*=
(
double
value) {
151
*
this
= *
this
* value;
152
}
153
154
161
Angle
operator/
(
int
value)
const
{
162
return
*
this
/ (double)value;
163
}
164
165
171
void
operator/=
(
double
value) {
172
*
this
= *
this
/ value;
173
}
174
175
// Relational operator functions
176
187
bool
operator==
(
const
Angle
& angle2)
const
{
188
return
qFuzzyCompare(
angle
(
Radians
), angle2.
angle
(
Radians
));
189
}
190
191
199
bool
operator!=
(
const
Angle
& angle2)
const
{
200
return
!(*
this
== angle2);
201
}
202
203
210
bool
operator<=
(
const
Angle
& angle2)
const
{
211
return
*
this
< angle2 || *
this
== angle2;
212
}
213
214
222
bool
operator>=
(
const
Angle
& angle2)
const
{
223
return
*
this
> angle2 || *
this
== angle2;
224
}
225
226
239
double
radians
()
const
{
return
angle
(
Radians
); }
240
245
double
degrees
()
const
{
return
angle
(
Degrees
); }
246
252
void
setRadians
(
double
radians
) {
setAngle
(radians,
Radians
); }
253
259
void
setDegrees
(
double
degrees
) {
setAngle
(degrees,
Degrees
); }
260
261
virtual
QString
toString
(
bool
includeUnits =
true
)
const
;
262
263
protected
:
264
double
unitWrapValue
(
const
Units
& unit)
const
;
265
virtual
double
angle
(
const
Units
& unit)
const
;
266
virtual
void
setAngle
(
const
double
&
angle
,
const
Units
& unit);
267
268
private
:
273
double
m_radians;
274
};
275
}
276
277
QDebug
operator<<
(QDebug dbg,
const
Isis::Angle
&angleToPrint);
278
279
#endif