#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. |