Source: Angle.h


Annotated List
Files
Globals
Hierarchy
Index
#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.