#ifndef ANGLEREP_H
#define ANGLEREP_H
#include "SelfTestingObject.h"
namespace NobelNS {
/** Normalisoi niin, että alue on [0, 360[
* @param a normalisoitava
* @return normalisoitu
*/
double normalize360(double a) {
if( a < 0 ) {
return fmod(a, -360) + 360;
}
else {
return fmod(a, 360);
}
}
/** Normalisoi niin, että alue on ]-180, 180].
* @param a normalisoitava
* @return normalisoitu
*/
double normalize180(double a) {
double t = normalize360(a);
if(t > 180)
t -= 360;
return t;
}
/** Kulman sisäinen esitysmuoto. */
class AngleRep : public SelfTestingObject {
public:
/** Kulma asteissa. */
double angleDeg;
/** Invariantin tarkistus.
* @return true, jos angleDeg kuuluu alueelle ]-180, 180]
*/
virtual bool invariant() const {
return (-180 < angleDeg) && (angleDeg <= 180);
}
/** Normalisoi kulma, niin että se on välillä ]-180, 180] astetta. */
void normalize() {
angleDeg = normalize180(angleDeg);
}
/** Destruktori. */
virtual ~AngleRep() { }
};
}
#endif
| Generated by: hoppq@ilenkone on Tue Mar 20 23:14:05 2001, using kdoc 2.0a53. |