#ifndef ANGLE_H
#define ANGLE_H
#include <string>
#include "SelfTestingObject.h"
namespace Nobel {
class AngleRep;
/** Kulman mahdolliset mittayksiköt. PTU tarkoittaa pan-tilt-yksikön
* käyttämää mittayksikköä.
*/
enum AngleUnit { Deg, Deg10th, Rad, PTU };
/** Itsekonvertoiva kulmayksikkö. Angle-luokan ilmentymät ovat
* kulmia, jotka osaavat itse konvertoida itsensä toiseen mittayksikköön.
*/
class Angle : public SelfTestingObject {
public:
/** Palauta kulma annetussa mittayksikössä.
* @param unit haluttu mittayksikkö
* @return kulman koko
*/
double getAngle(AngleUnit unit) const;
/** Palauta kulman esitys tekstimuodossa.
* @return kulman suuruus asteissa
*/
virtual std::string asString() const;
/** Tarkista onko olio eheässä tilassa.
* @return olion eheys totuusarvona
*/
virtual bool invariant() const;
/** Aseta kulman suuruus.
* @param newAngle kulman uusi koko
* @param unit koon mittayksikkö
* @return viite muutettuun kulmaan
*/
Angle& setAngle(double newAngle, AngleUnit unit);
/** Laske kulma yhteen sijoittamalla.
* @param a yhteenlaskettava kulma
* @return viite muutettuun olioon
*/
Angle& operator+=(const Angle& a);
/** Vähennä kaksi kulmaa toisistaan sijoituksella.
* @param a vähennettävä kulma
* @return viite muutettuun olioon
*/
Angle& operator-=(const Angle& a);
/** Konstruktori.
* @param angle kulman koko
* @param unit koon mittayksikkö
*/
Angle(double angle, AngleUnit unit);
/** Kopiokonstruktori.
* @param a kopioitava kulma
*/
Angle(const Angle& a);
/** Vaihda kaksi kulmaa keskenään.
* @param a vaihdettava kulma
*/
virtual void swap(Angle& a);
/** Sijoitusoperaattori.
* @param a sijoitettava kulma.
*/
Angle& operator=(const Angle& a);
/** Destruktori. */
virtual ~Angle();
private:
/** Osoitin kulman sisäiseen esitysmuotoon. */
AngleRep* rep;
};
/** Kahden kulman yhteenlasku.
* @param a ensimmäinen yhteenlaskettava
* @param b toinen yhteenlaskettava
* @return yhteenlaskettu kulma
*/
Angle operator+(const Angle& a, const Angle& b);
/** Kahden kulman vähennyslasku.
* @param a kulma, josta vähennetään
* @param b kulma, joka vähennetään
* @return vähennyslaskun tulos
*/
Angle operator-(const Angle& a, const Angle& b);
/** Pienempi-kuin operaattori kulmille.
* @param a vasen puoli
* @param b oikea puoli
* @return a < b
*/
bool operator<(const Angle& a, const Angle& b);
/** Yhtäsuuruusvertailu kulmille.
* @param a vasen puoli
* @param b oikea puoli
* @return a==b
*/
bool operator==(const Angle& a, const Angle& b);
}
#endif
| Generated by: hoppq@ilenkone on Thu Mar 1 15:43:18 2001, using kdoc 2.0a50. |