Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CVector Class Template Reference

Einfache Vektorklasse. More...

#include <CVector.h>

List of all members.

Public Methods

Public Attributes


Detailed Description

template<int N, class T> class CVector

Das Klassentemplate CVector implementiert einen N - dimensionalen Vektor mit Komponenten vom Datentyp T. Die nötigen arithmetischen Operatoren wurden überschrieben, so dass es möglich ist, alle Rechenoperationen durchzuführen, die auf Vektoren im mathematischen Sinne definiert sind.

Precondition:
Der Templateparameter N muss mindestens eins betragen. Der durch den Templateparameter T spezifizierte Komponentendatentyp muss in irgendeiner Weise in den Typ int oder float konvertierbar sein. Ferner müssen alle gängigen arithmetischen Operatoren für den Datentyp T überladen worden sein.


Constructor & Destructor Documentation

template<int N, class T>
CVector<N, T>::CVector<N, T> ( ) [inline]
 

Der Standardkonstruktor initialisiert alle Komponenten des Vektors mit dem Wert 0. Deshalb ist es, wie oben bereits beschrieben, notwendig dass der Datentyp T zu (int) oder (float) konvertiert werden kann.

template<int N, class T>
CVector<N, T>::CVector<N, T> ( T a[N] ) [inline]
 

Dieser zusätzliche Konstruktor erlaubt es ein CVektor-Objekt auf der Basis eines N elementigen Arrays mit Elementen vom Typ T zu erzeugen. Dabei wird das Array a[] in das Komponentenarray c[] kopiert.

template<int N, class T>
template<int K, class F>
CVector<N, T>::CVector<N, T> ( const CVector< K, F > & s ) [inline]
 

Der Kopierkonstruktor erzeugt ein CVektor-Objekt auf der Basis eines anderen CVector-Objekts. Dabei werden die Werte der Komponenten des Vektors s dem neu erzeugten Vektor zugewiesen. Es ist nicht zwangsweise erforderlich, dass der Vektor s und der neu erzeugte Vektor die gleiche Anzahl an Komponenten aufweisen. Hat der Zielvektor weniger Komponenten so werden nur soviele wie möglich kopiert. Hat der Zielvektor mehr Komponenten, so werden die übriggebliebenen mit 0 initialisiert.


Member Function Documentation

template<int N, class T>
T CVector<N, T>::length ( ) [inline]
 

Die Routine berechnet die euklidische Länge des Vektors, indem sie die Summe der Komponentenquadrate bildet und daraus die Wurzel zieht.

template<int N, class T>
void CVector<N, T>::normalize ( ) [inline]
 

Die Routine normalisiert den Vektor, so dass seine euklidsche Länge anschließend 1 ergibt. Dabei wird zunächst die euklidische Länge des Vektors berechnet und alle Komponenten durch diese dividiert.

Remarks:
Vektoren der Länge Null werden abgefangen.

template<int N, class T>
CVector< N, T > & CVector<N, T>::operator+= ( const CVector< N, T > & a ) [inline]
 

Der Vektor a wird auf den links vom "+="-Operator stehenden Vektor aufaddiert. Hierbei wird eine komponentenweise Addition durchgeführt.

template<int N, class T>
CVector< N, T > & CVector<N, T>::operator-= ( const CVector< N, T > & a ) [inline]
 

Der Vektor a wird von dem links vom "-="-Operator stehenden Vektor abgezogen. Hierbei wird eine komponentenweise Subtraktion durchgeführt.

template<int N, class T>
CVector< N, T > & CVector<N, T>::operator *= ( T f ) [inline]
 

Der links vom "*="-Operator stehende Vektor wird mit dem skalaren Wert f vom Typ T multipliziert. Hierbei wird eine komponentenweise Multiplikation durchgeführt.

template<int N, class T>
CVector< N, T > & CVector<N, T>::operator/= ( T f ) [inline]
 

Der links vom "/="-Operator stehende Vektor wird durch den skalaren Wert f vom Typ T dividiert. Hierbei wird eine komponentenweise Division durchgeführt.

template<int N, class T>
CVector< 3, T > & CVector<N, T>::operator%= ( const CVector< 3, T > & b ) [inline]
 

Es wird das Vektorprodukt zwischen dem links vom "%="-Operator stehenden Vektor und dem Vektor b berechnet. Das Ergebnis wird wieder dem links vom "%="-Operator stehenden Vektor abgelegt.

Remarks:
Dieser Operator ist nur auf 3-dimensionale Vektoren anwendbar.


Member Data Documentation

template<int N, class T>
T CVector<N, T>::c
 

Das Array speichert N Komponenten vom Datentyp T.


The documentation for this class was generated from the following file:
Generated at Fri Apr 19 16:53:06 2002 for GLFramework by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001