Source: ./Nobel/Angle.h


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