#ifndef ANGLE_H
#define ANGLE_H
#include <string>
#include "SelfTestingObject.h"
namespace NobelNS {
class AngleRep;
/** Kulman mahdolliset mittayksiköt. PTU tarkoittaa pan-tilt-yksikön
* käyttämää mittayksikköä, Rad radiaaneja, Deg ja Deg10th asteita ja
* asteiden kymmenesosia.
*/
enum AngleUnit { Deg, Deg10th, Rad, PTU };
/** Itsekonvertoiva kulmayksikkö. Angle-luokan ilmentymät ovat
* kulmia, jotka osaavat itse kertoa kokonsa eri mittayksiköissä. Kulma on
* normalisoiva siten, että palautettu
* kulman koko on aina välillä ]-180, 180] astetta.
*/
class Angle : public SelfTestingObject {
public:
/** Palauta kulma halutussa 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);
/** Kulman kertominen luvulla (sijoittava versio).
* @param b luku jolla kerrotaan
* @return viite muutettuun kulmaan
*/
Angle& operator*=(double b);
/** Kulman jakaminen luvulla (sijoittava versio).
* @param b luku jolla jaetaan
* @return viite muutettuun kulmaan
*/
Angle& operator/=(double b);
/** Konstruktori.
* @param angle kulman koko
* @param unit koon mittayksikkö
*/
Angle(double angle=0, AngleUnit unit=Deg);
/** 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);
/** Kulman kertominen luvulla.
* @param a kulma joka kerrotaan
* @param b luku jolla kerrotaan
* @return kerrottu kulma
*/
Angle operator*(const Angle& a, double b);
/** Kulman jakaminen luvulla.
* @param a kulma joka jaetaan
* @param b luku jolla jaetaan
* @return jaettu kulma
*/
Angle operator/(const Angle& a, double 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 Tue Mar 20 23:14:05 2001, using kdoc 2.0a53. |