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