Klassenbeschreibung der Bibliothek GeoSym
Im folgenden sind die einzelnen Klassen in einer Übersicht aufgeführt. Die direkte Anwahl einer Klasse kann durch Anklicken des Verweises erfolgen.
Bei der Beschreibung von Methoden einer Klasse soll anhand der Formatierung ersichtlich sein, ob es sich bei der Methode um eine normale, überschriebene oder geerbte Methode handelt. Zu diesem Zweck werden die folgenden Formatierungen verwendet:
Stil | Art der Methode |
Fett: | normale Methode |
Fett und Kursiv: | Überschriebene virtuelle Methode |
Kursiv: | Geerbte Methode |
Normal: | Standard-Methode |
Bei einer normalen Methode handelt es sich um eine Methode, die durch die Klasse selbst deklariert ist.
Die vituelle überschriebene Methode ist von einer Basisklasse deklariert worden, wird aber durch eine Methode der Klasse überschrieben.
Eine geerbte Methode ist zwar ebenfalls durch eine Basisklasse deklariert, wird aber nicht durch eine Methode der Klasse überschrieben.
Bei einer Standard-Methode handelt sich um den Standard Konstruktor oder Destruktor einer Klasse, d.h. diese sind nicht explizit implementiert.
Listen
Bei den verwendeten impliziten Listen soll das Konzept von Zugriffen auf Listenelemente beschrieben werden. Dabei werden zwei Accessoren verwendet, die dazu dienen die Länge der Liste zu erfragen und den Zugriff auf ein bestimmtes Element der Liste mittels dessen Index ermöglichen.
Die beiden Accessoren sind dabei durch die Methoden GetxxLen() und Getxx( int index ) implementiert.
Ein- und Ausgabe in Streams
Bei der Ein- und Ausgabe durch Streams werden die beiden Methoden Scan( istream& > und Print( ostream& ) verwendet. Besitzt eine Klasse eine dieser Methoden, so wird automatisch ein entsprechender Streamoperator << oder >> definiert, der lediglich die entsprechende Methode Scan oder Print aufruft.
Um ein besseres Verständnis für die folgenden Klassen der GeoSym-Bibliothek zu erleichtern, sollen in diesem Teil die Definitionen von Basisklassen gezeigt werden, von denen einige der GeoSym-Klassen abgeleitet sind.
Die abstrakte Klasse Face3D soll in diesem Rahmen genauer betrachtet werden, da sie eine einheitliche Schnittstelle für Flächen darstellt.
class Face3D
{
public:
~Face3D();
VIRT int GetLen() const = 0;
VIRT ID GetId() const = 0;
VIRT Vector3D GetVertex( int i ) const = 0;
VIRT Vector3D GetNormalVector() const;
ostream& Print( ostream& o ) const;
// Shortcuts
int len() const;
Vector3D v( int i ) const;
friend ostream& operator <<( ostream& o, Face3D& face );
};
Methoden der Basisklasse
- int GetLen() const
Virtuelle, abstrakte Methode, welche die Anzahl der in der Fläche enthaltenen Eckpunkte zurück gibt.
Muß von der abgeleiteten Klasse überschrieben werden.
- ID GetId() const
Virtuelle, abstrakte Methode, welche die ID der Fläche zurück liefert. Die ID dient der Identifikation der Fläche.
Muß von der abgeleiteten Klasse überschrieben werden.
- Vector3D GetVertex( int index ) const
Virtuelle, abstrakte Methode, durch die ein bestimmter Eckpunkt der Fläche abgefragt werden kann. Der Index index liegt dabei in dem Bereich [0 ... GetLen()-1].
Muß von der abgeleiteten Klasse überschrieben werden.
- Vector3D GetNormalVector() const
Virtuelle Methode, welche den Normalenvector der Fläche zurück gibt.
Wenn mindestens drei Flächeneckpunkte vorhanden sind, wird der Normalenvektor berechnet.
- ostream& Print( ostream& o ) const
Gibt die Fläche und die Indices der Eckpunkte auf den Ausgabestream ostream aus.
class Node
{
public:
Node();
virtual ~Node();
Node* GetSucc() const;
Node* GetPred() const;
class List& GetList() const;
virtual SIZE_T GetSize() const;
BOOL IsTail() const;
BOOL IsHead() const;
BOOL IsFirst() const;
BOOL IsLast() const;
BOOL IsValidNode() const;
// Shortcuts
Node* succ() const;
Node* pred() const;
class List& list() const;
virtual SIZE_T size() const;
void init();
};
template <class T> class TNode : public Node
{
public:
virtual SIZE_T GetSize() const;
T* GetSucc() const;
T* GetPred() const;
class TList<T>& GetList() const;
// Shortcuts
virtual SIZE_T size() const;
T* succ() const;
T* pred() const;
class TList<T>& list() const;
};
class Vector3D
{
public:
Vector3D( double x=0.0, double y=0.0, double z=0.0 );
BOOL operator==( const Vector3D &v );
Vector3D& operator+=( const Vector3D &v );
Vector3D& operator-=( const Vector3D &v );
Vector3D& operator*=( double scalar );
Vector3D& operator*=( const RotLat &r );
Vector3D& operator*=( const Vector3D &v );
double operator*( const Vector3D &v );
Vector3D& Normalize();
double GetX() const;
double GetY() const;
double GetZ() const;
double GetNorm() const;
istream& Scan( istream& i );
ostream& Print( ostream& o ) const ;
friend istream& operator >>( istream& i, Vector3D &v );
friend ostream& operator <<( ostream& o, const Vector3D &v );
};
class RotLat
{
public:
static const RotLat identity;
RotLat();
RotLat( const RotLat& rotlat );
RotLat& operator=( const RotLat& rotlat );
RotLat& Identity();
RotLat& Invert();
RotLat& Rotate( const Vector3D &rot );
RotLat& RotateX( double phi );
RotLat& RotateY( double phi );
RotLat& RotateZ( double phi );
RotLat& Translate( const Vector3D &trans );
RotLat& TranslateX( double dx );
RotLat& TranslateY( double dy );
RotLat& TranslateZ( double dz );
RotLat& SetTranslation( const Vector3D &trans );
const RotLat& Apply( Vector3D &vector ) const;
const RotLat& ApplyReverse( Vector3D &vector ) const;
RotLat& operator *=( const RotLat& rotlat );
Vector3D GetTranslation() const;
istream& Scan( istream& i );
ostream& Print( ostream& o ) const ;
friend istream& operator >>( istream& i, RotLat& rotlat );
friend ostream& operator <<( ostream& o, const RotLat& rotlat );
};
template class TGeoList
: public GeoList
{
public:
TGeoList( int skipcount=20 );
~TGeoList();
T* Append( T* node );
T* GetNode( int index );
void Fix();
void UnFix();
T* GetHead() const;
T* GetTail() const;
T* GetFirst() const;
T* GetLast() const;
};
Als erstes soll die verwendete Modellierung eines Körpers beschrieben werden. Der Körper wird hauptsächlich anhand seiner Kinematik modelliert. Dazu wird erfolgt eine Unterscheidung in Wurzel- (Root) und Unterelemente (Member). Wie sein Name andeutet, bildet die Wurzel das Element von dem weitere Elemente kinematisch abhängen können. Die Untergeordneten Elemente können selbstverständlich weitere untergeordnete Elemente besitzen.
Verbunden sind diese in der Körperhierarchie auf verschiedenen Ebenen befindlichen Elemente durch Gelenke (Joint). Das Gelenk bildet die kinematische Modellierung nach. Dazu kann es einen Freiheitsgrad nachbilden, der rotatorischer oder translatorischer Natur sein kann und eine bestimmte Achse verwendet.
Diese Klasse dient zur Speicherung und Abfrage von Zeiten.
class Time
- void SetTime( float timeinit )
float GetTime()
Die interne Uhrzeit kann mit diesem Accessoren gesetzt und abgefragt werden.
Übersicht
Durch diese Klasse wird eine Umgebungsquader definiert werden. Zu diesem Zweck werden zwei Vektoren verwendet, die den minimalen und den maximalen Punkt des Quaders angeben.
Die Klasse BoundBox ist von keiner Klasse abgeleitet.
class BoundBox
- BOOL TestPoint( Vector3D& point, BOOL change=FALSE )
Testet den Punkt point, ob er innerhalb des Umgebungsquaders liegt. Liegt der Punkt innerhalb des Quaders wird TRUE zurückgegeben, andernfalls FALSE.
- BOOL TestBox( BoundBox& boundbox )
Testet den Quader boundbox, ob er mit Teilen innerhalb des Ungebungsquaders liegt. Überschneiden sich die Quader wird TRUE zurückgegeben, andernfalls FALSE.
- void SetMinExt( Vector3D& minpoint)
Vector3D& GetMinExt()
Setzen und Abfragen des Minimalpunktes des Quaders. (Punkt mit den kleinsten x-, y- und z-Komponenten)
- void SetMaxExt( Vector3D& maxpoint )
Vector3D& GetMaxExt()
Setzen und Abfragen des Maximalpunktes des Quaders. (Punkt mit den größten x-, y- und z-Komponenten)
Vector3D
Übersicht
Die Klasse dient der Speicherung eines Flächeneck- oder Linienendpunktes. Dazu wird der Punkt in einem Vektor gespeichert.
Durch die Ableitung von dem Templateknoten ist die Klasse Vertex listenfähig.
class Vertex : public TNode<Vertex>
- Vertex()
- Vertex( Vector3D& pointinit )
Durch diesen Konstruktor kann der Punkt bereits während der Instanziierung angegeben werden.
- void SetPoint( Vector3D& pointinit )
Vector3D GetPoint()
Mittels dieser Operatoren kann der Punkt der Vertex gesetzt und abgefragt werden.
- istream& Scan( istream& in )
ostream& Print( ostream& out ) const
Ein- und Ausgabe über Streams.
Vector3D
Übersicht
gs_Face3D stellt eine Klasse dar, die 3-dimensionale, planare Flächen zur Verfügung stellt.
Die Klasse gs_Face3D ist zum einen von der Basisklasse Face3D und zum anderen von dem Templateknoten TNode<gs_Face3D> abgeleitet. Durch die Ableitung von dem Templateknoten erhält die Klasse die Listenfähigkeit.
class gs_Face3D : public Face3D,
public TNode<gs_Face3D>
- gs_Face3D( TGeoList* vertexlist, int vertexnum = 0 )
Durch den Konstruktor wird der Zeiger auf eine Liste übergeben werden, in der die Vertices der Fläche gespeichert sind. Dies ist notwendig, da gs_Face3D nur über Indices auf die Eckpunkte zugreift.
Durch den Parameter vertexnum kann zusätzlich die Anzahl der Eckpunkte der Fläche angegeben werden.
- VIRT int GetLen() const
Liefert die Anzahl der Eckpunkte der Fläche zurück.
- VIRT Vector3D GetVertex( int i ) const
Liefert den i-ten Eckpunkt der Fläche zurück.
- Id GetId( int i ) const
Liefert die Id der Fläche zurück.
- VIRT Vector3D GetNormalVector() const
Liefert den Normalenvektor der Fläche zurück. Die Orientierung des Normalenvektors ist aus der nachfolgenden Abbildung ersichtlich.
Abbildung: Orientierung des Flächennormalvektors
- gs_Face3D& SetIndex( int i, int index )
int GetIndex( int i )
Mittels dieser Accessoren kann der Index des i-ten Eckpunktes gesetzt oder abgefragt werden.
- BOOL HasIndex( int index )
Mit dieser Methoden kann die Fläche abgefragt werden, ob sie einen Eckpunkt besitzt dessen Index gleich index ist. Besitzt die Fläche einen solchen Index, so wird TRUE zurückgegeben, andernfalls FALSE.
- gs_Face3D& Copy( const gs_Face3D& face )
Duppliziert die Fläche face. Dazu übernimmt die Klasse die Indices, sowie deren Zahl und den Normalenvektor der Fläche face.
- istream& Scan( istream& in )
ostream& Print( ostream& out ) const
Ein- und Ausgabe der Fläche über Streams.
- operator =( gs_Face3D& face )
Weist Fläche face der Fläche zu. Es werden dabei alle Daten der Fläche face übernommen.
Vector3D
Face3D
TNode
Übersicht
gs_ObjFace3D stellt ein spezielle Fläche dar, die automatisch eine Transformation der Eckpunkte innerhalb eines Objektes vollführt, falls dies notwendig ist.
Die Klasse gs_ObjFace3D ist von der Klasse gs_Face3D abgeleitet. Dadurch erhält die Klasse die gleiche Funktionalität wie gs_Face3D.
class gs_ObjFace3D : public gs_Face3D
- VIRT int GetLen() const
Liefert die Anzahl der Eckpunkte der Fläche zurück.
- VIRT Vector3D GetVertex( int i ) const
Liefert den i-ten Eckpunkt der Fläche zurück.
- Id GetId( int i ) const
Liefert die Id der Fläche zurück.
- VIRT Vector3D GetNormalVector() const
Liefert den Normalenvektor der Fläche zurück. Die Orientierung des Normalenvektors ist aus der obigen Abbildung ersichtlich.
- gs_Face3D& SetIndex( int i, int index )
int GetIndex( int i )
Mittels dieser Accessoren kann der Index des i-ten Eckpunktes gesetzt oder abgefragt werden.
- BOOL HasIndex( int index )
Mit dieser Methoden kann die Fläche abgefragt werden, ob sie einen Eckpunkt besitzt dessen Index gleich index ist. Besitzt die Fläche einen solchen Index, so wird TRUE zurückgegeben, andernfalls FALSE.
- gs_Face3D& Copy( const gs_Face3D& face )
Duppliziert die Fläche face. Dazu übernimmt die Klasse die Eigenschaften der Klasse face.
- istream& Scan( istream& in )
ostream& Print( ostream& out ) const
Ein- und Ausgabe der Fläche über Streams.
- operator =( gs_Face3D& face )
Weist der Fläche die zweite Fläche face zu.
Vector3D
Face3D
TNode
Übersicht
Diese Klasse dient zur Abspeicherung eines bevorzugten Zustandes eines Gelenks.
Für eine Listenfähigkeit ist gs_PreferredState von dem Templateknoten TNode<gs_PreferredState> abgeleitet.
class gs_PreferredState : public TNode<gs_PreferredState>
- double GetValue()
Erfrägt den Wert des bevorzugten Zustandes.
- istream& Scan( istream& in )
ostream& Print( ostream& out )
Ein- und Ausgabe von gs_PreferredState über Streams.
TNode
Übersicht
class gs_Feature : public TNode<gs_Feature>
- gs_Feature()
- gs_Feature( TSmartList<Vertex>* vertexlist )
enum Sensor
{
None=0; CCD, Laser, Radar, Abstrakt
};
- void SetVertexList( TSmartList<Vertex>* vertexlist );
- Id GetId()
- int GetLen()
- Sensor GetSensorType()
- VIRT Vector3D GetVertex( int index )
- istream& Scan( istream& in )
ostream& Print( ostream& out )
- operator =( gs_Feature& feature )
Vector3D
TNode
Übersicht
class gs_ObjFeature : public gs_Feature
- gs_ObjFeature()
- gs_ObjFeature( TSmartList<Vertex>* vertexlist )
enum Sensor
{
None=0; CCD, Laser, Radar, Abstrakt
};
- void SetVertexList( TSmartList<Vertex>* vertexlist );
- Id GetId()
- int GetLen()
- Sensor GetSensorType()
- VIRT Vector3D GetVertex( int index )
- istream& Scan( istream& in )
ostream& Print( ostream& out )
- operator =( gs_Feature& feature )
Vector3D
TNode
gs_Feature
Übersicht
Klasse zur Implementierung eines Gelenkes mit verschiedenen Freiheitsgraden. Dient der Speicherung von prototypischen Daten.
class gs_ClassJoint
enum Type
{
Fixed=0, Rotation, Translation
};
- double GetMaximum()
Liefert den maximalen Wert des Gelenkes zurück.
- double GetTau()
Zeitspanne innerhalb derer der Zustand als verläßlich anzusehen ist.
- RotLat& GetFix()
Gibt die Transformationsmatrix zurück, die die Lage der zugeordneten Memberklasse bezüglich seiner übergeordneten Klasse.
- Type GetDegFreeType()
Art des Freiheitsgrades des Gelenkes. (Rotation, Translation oder Fixed)
- int GetPrefStateLen()
gs_PreferredState& GetPrefState( int index )
Das Gelenk besitzt eine Liste von bevorzugten Zuständen, die dieses Gelenk einnehmen kann. Mittels der beiden Accessoren kann die Anzahl der Zustände abgefragt werden, sowie auf einen bestimmten Zustand zugegriffen werden.
- istream& Scan( istream& in )
ostream& Print( outstream& out )
Ein- und Ausgabe des Gelenkes über Streams.
RotLat
gs_PreferredState
Übersicht
Klasse zur Implementierung von verschiedenen Freiheitsgraden eines untergeordneten Elements.
class gs_ObjectJoint
- BOOL Freeze()
"Friert" das Gelenk ein. Es werden dabei die nötigen Transformationsmatrizen berechnet.
- BOOL IsFrozen()
Frägt den Status des Gelenkes ab. Ist das Gelenk eingefroren wird TRUE zurückgegeben, andernfalls FALSE.
- gs_ObjectJoint& Melt()
Taut das Gelenk wieder auf.
- RotLat& GetToParent()
Liefert eine Transformationsmatrix zurück, welche die Position des dem Gelenk zugeordneten Elements bezüglich seines übergeordneten Elements angibt.
** Darf nur aufgerufen werden, wenn das Gelenk eingefroren ist! **
- gs_ClassJoint* GetClassJoint()
Gibt den Zeiger auf das zugeordnete Klassen-Gelenk gs_ClassJoint zurück.
- void SetState( double valueinit )
double GetState()
Setzen oder Abfragen des Wertes für den Gelenkausschlag. Der Wert ist dabei normiert auf den Bereich [0,0 ... 1,0].
** Darf nur aufgerufen werden, wenn das Gelenk nicht eingefroren ist! **
- void SetTimeStamp( Time tstampinit )
Time GetTimeStamp()
- double Confidence( Time acttime )
RotLat
Time
gs_ClassJoint
Übersicht
Die virtuelle abstrakte Basisklasse gs_Solid dient als Basis für die verschiedenen Elemente zur Nachbildung eines Körpers.
gs_Solid ist eine Basisklasse für Elemente die eine Listenfähigkeit besitzen sollen. Aus diesem Grund ist gs_Solid von dem Templateknoten TNode<gs_Solid> abgeleitet.
class gs_Solid : public TNode<gs_Solid>
- VIRT CSTRING GetName() = 0
Virtuelle, abstrakte Methode mit der der Name eines Körperelements abgefragt werden kann.
- VIRT int GetVertexLen() const = 0
VIRT Vector3D GetVertex() = 0
Methoden für den Zugriff auf die Vertices des Elements.
- VIRT int GetFaceLen() const = 0
VIRT gs_Face3D& GetFace() = 0
Methoden für den Zugriff auf die Flächen des Elements.
- VIRT int GetMaskFaceLen() const = 0
VIRT gs_Face3D& GetMaskFace() = 0
Methoden für den Zugriff auf die Maskenflächen des Elements.
- VIRT int GetFeatureLen() const = 0
VIRT gs_Feature& GetFeature() = 0
Methoden für den Zugriff auf die Merkmale des Elements.
TNode
Vector3D
gs_Face3D
gs_Feature
Übersicht
Klasse zur Zusammenfassung gemeinsamer Datenstrukturen von Member- und Rootklassen.
Die Klasse gs_Class ist direkt von der Basisklasse gs_Solid abgeleitet.
class gs_Class : public gs_Solid
- void Fix()
void UnFix()
Die Methode Fix() dient dazu, die in dem Klasse gs_Class enthaltenen Listen zu fixieren, d.h. die Knoten werden nicht mehr eigens gespeichert, sondern alle Knoten der Liste werden in einem Array abgelegt. Das hat zur folge, daß Zugriffe auf die Listenelemente sich wesentlich beschleunigen. Durch die Methode UnFix() wird das Array wieder in einzelne Knoten aufgelöst.
Ist die Klasse fixiert, können die Listen nicht mehr verändert werden.
- int AddFace( const Face3D& face )
int AddMaskFace( const Face3D& face )
Fügt dem Klassenelement eine neue Fläche oder Maskenfläche hinzu. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- int AddLine( const Face3D& face )
Mittels dieser Methode wird dem Klassenelement ein weiteres Feature vom Typ "Line" hinzugefügt. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- gs_MemberClass* AddMemberClass( gs_MemberClass* memclass )
Mit der Methode AddMemberClass kann an das Klassenelement eine weitere Memberklasse angehängt werden. Der Zeiger auf diese Memberklasse muß dabei der Methode übergeben werden, sie erzeugt nicht automatisch einen neuen Member.
- CSTRING GetName()
Gibt den Namen des Klassenelementes zurück.
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberClassLen() const
gs_MemberClass& GetMemberClass( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Memberklassen.
- gs_MemberClass& GetMemberClass( CSTRING name ) const
Gibt die untergeordnete Memberklasse mit dem durch name spezifizierten Namen zurück.
TNode
Vector3D
Face3D
gs_Face3D
gs_Feature
gs_Solid
gs_MemberClass
Übersicht
gs_MemberClass implementiert eine untergeordnetes Klassenelement.
gs_MemberClass ist direkt von gs_Class abgeleitet.
class gs_MemberClass : public gs_Class
- gs_MemberClass( gs_RootClass* rootclass = NULL, gs_Class* parentclass* = NULL )
- gs_ClassJoint ClassJoint
Gelenk, in dem die geometrischen Abhängigkeiten von dem übergeordneten Klassenelement gespeichert sind.
- gs_RootClass* GetRootClass()
Liefert den Zeiger auf die Wurzelklasse zurück, dem die Unterklasse zugeordnet ist.
- gs_Class* GetParentClass()
Gibt den Zeiger auf das Klassenelement zurück, dem die Unterklasse direkt untergeordnet ist. (Kann Wurzel- oder Unterklasse sein)
- void Fix()
void UnFix()
Die Methode Fix() dient dazu, die in dem Klasse gs_Class enthaltenen Listen zu fixieren, d.h. die Knoten werden nicht mehr eigens gespeichert, sondern alle Knoten der Liste werden in einem Array abgelegt. Das hat zur folge, daß Zugriffe auf die Listenelemente sich wesentlich beschleunigen. Durch die Methode UnFix() wird das Array wieder in einzelne Knoten aufgelöst.
Ist die Klasse fixiert, können die Listen nicht mehr verändert werden.
- int AddFace( const Face3D& face )
int AddMaskFace( const Face3D& face )
Fügt der Memberklasse eine neue Fläche oder Maskenfläche hinzu. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- int AddLine( const Face3D& face )
Mittels dieser Methode wird der Memberklasse ein weiteres Feature vom Typ "Line" hinzugefügt. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- gs_MemberClass* AddMemberClass( gs_MemberClass* memclass )
Mit der Methode AddMemberClass kann an die Memberklasse eine weitere Memberklasse angehängt werden. Der Zeiger auf diese Memberklasse muß dabei der Methode übergeben werden, sie erzeugt nicht automatisch einen neuen Member.
- CSTRING GetName()
Gibt den Namen des Klassenelementes zurück.
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberClassLen() const
gs_MemberClass& GetMemberClass( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Memberklassen.
- gs_MemberClass& GetMemberClass( CSTRING name ) const
Gibt die untergeordnete Memberklasse mit dem durch name spezifizierten Namen zurück.
- istream& Scan( istream& in )
ostream& Print( ostream& out )
Ein- und Ausgabe der Unterklasse über Streams.
TNode
Vector3D
Face3D
gs_Face3D
gs_Feature
gs_Solid
gs_MemberClass
Übersicht
gs_RootClass ist ebenfalls wie gs_MemberClass von gs_Class abgeleitet.
class gs_RootClass : public gs_Class
- gs_RootObject* CreateInstance( CSTRING name, const RotLat& toworld )
Instanziiert die Klasse zu einem Objekt, wobei dieses in seiner Struktur der Klasse entspricht. Durch den Parameter name wird der Namen angegeben, den das Objekt erhalten soll. Durch die TRansformationsmatrix toworld wird die Position des Objektes in der Welt angegeben.
- void Fix()
void UnFix()
Die Methode Fix() dient dazu, die in dem Klasse gs_Class enthaltenen Listen zu fixieren, d.h. die Knoten werden nicht mehr eigens gespeichert, sondern alle Knoten der Liste werden in einem Array abgelegt. Das hat zur folge, daß Zugriffe auf die Listenelemente sich wesentlich beschleunigen. Durch die Methode UnFix() wird das Array wieder in einzelne Knoten aufgelöst.
Ist die Klasse fixiert, können die Listen nicht mehr verändert werden.
- int AddFace( const Face3D& face )
int AddMaskFace( const Face3D& face )
Fügt der Rootklasse eine neue Fläche oder Maskenfläche hinzu. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- int AddLine( const Face3D& face )
Mittels dieser Methode wird der Rootklasse ein weiteres Feature vom Typ "Line" hinzugefügt. Der Rückgabewert gibt dabei die Anzahl der neu erzeugten Eckpunkte (Vertices) an.
- gs_MemberClass* AddMemberClass( gs_MemberClass* memclass )
Mit der Methode AddMemberClass kann an die Rootklasse eine weitere Memberklasse angehängt werden. Der Zeiger auf diese Memberklasse muß dabei der Methode übergeben werden, sie erzeugt nicht automatisch einen neuen Member.
- CSTRING GetName()
Gibt den Namen des Klassenelementes Zurück.
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberClassLen() const
gs_MemberClass& GetMemberClass( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Memberklassen.
- gs_MemberClass& GetMemberClass( CSTRING name ) const
Gibt die untergeordnete Memberklasse mit dem durch name spezifizierten Namen zurück.
- istream& Scan( istream& in )
ostream& Print( ostream& out )
Ein- und Ausgabe der Wurzelklasse über Streams.
TNode
Vector3D
Face3D
gs_Face3D
gs_Feature
gs_Solid
gs_MemberClass
Übersicht
Klasse zur Zusammenfassung von Gemeinsamkeiten von Objektelementen.
Die Klasse gs_Object ist von der Klasse gs_Solid abgeleitet.
class gs_Object : public gs_Solid
- gs_Class* GetClassP()
Liefert den Zeiger auf das dem Objektelement zugeordnete Klassenelement.
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberObjectLen() const
gs_MemberObject& GetMemberObject( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Unterobjekten.
- gs_MemberObject& GetMemberObject( CSTRING name ) const
Gibt das untergeordnete Unterobjekt mit dem durch name spezifizierten Namen zurück.
TNode
Vector3D
gs_Face3D
gs_Feature
gs_Solid
gs_Class
Übersicht
class gs_MemberObject : public gs_Object
- gs_ObjectJoint ObjectJoint
- gs_Class* GetClassP()
Liefert den Zeiger auf das dem Objektelement zugeordnete Klassenelement.
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberObjectLen() const
gs_MemberObject& GetMemberObject( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Unterobjekten.
- gs_MemberObject& GetMemberObject( CSTRING name ) const
Gibt das untergeordnete Unterobjekt mit dem durch name spezifizierten Namen zurück.
- gs_MemberClass* GetMemberClass()
Gibt den Zeiger auf die dem Memberobjekt zugeordnete Memberklasse zurück.
- gs_RootObject* GetRootObject()
Gibt den Zeiger auf das Wurzelobjekt zurück, unter dem sich das MemberObjekt eingeordnet ist.
- gs_Object* GetParentObject()
Liefert den Zeiger auf das dem Memberobjekt übergeordnete Objektelement zurück.
- CSTRING GetName()
Erfrägt den Namen des Memberobjekts. Dazu wird der Namen der zugeordneten Memberklasse verwendet.
- void Freeze( const RotLat& rotlatinit, BOOL useparenttrafo=TRUE )
Fixiert des Memberobjekt durch das Einfrieren des Objektgelenks ObjectJoint. Enthält das Memberobjekt weitere untergeordnete Memberobjekte, so werden diese ebenfalls fixiert. Mittels des Parameters rotlatinit kann eine Transformationsmatrix übergeben werden, falls nur ein Teilbereich des Objektes eingefroren werden soll. Der zweite Parameter useparenttrafo erlaubt es anzugeben, ob die Transformation durch das zugeordnete Gelenk verwendet werden soll.
Erst nachdem das Memberobjekt eingefroren wurde, kann auf die geometrischen Elemente zugegriffen werden. Zu den geometrischen Elementen zählen dabei die Flächen, Merkmale und Eckpunkte des Objektelements.
- void Melt()
Taut das Memberobjekt wieder auf. Es können jetzt Veränderungen an den Zuständen der Gelenke vorgenommen werden.
TNode
Vector3D
Face3D
gs_Face3D
gs_Feature
gs_ObjectJoint
gs_Solid
gs_Class
gs_MemberClass
gs_RootClass
gs_Object
Übersicht
class gs_RootObject : public gs_Object
- int GetVertexLen()
Vector3D GetVertex( int index )
Listenaccessoren für den Zugriff auf einen der Eckpunkte.
- int GetFaceLen()
gs_Face3D& GetFace( int index )
Listenaccessoren für den Zugriff auf eine der Flächen.
- int GetMaskFaceLen()
gs_Face3D& GetMaskFace( int index )
Listenaccessoren für den Zugriff auf eine der Maskenflächen.
- int GetFeatureLen()
gs_Feature& GetFeature( int index )
Listenaccessoren für den Zugriff auf eines der Merkmale.
- int GetMemberObjectLen() const
gs_MemberObject& GetMemberObject( int index ) const
Listenaccessoren für den Zugriff auf eine der untergeordneten Unterobjekten.
- gs_MemberClass& GetMemberObject( CSTRING name ) const
Gibt das untergeordnete Unterobjekt mit dem durch name spezifizierten Namen zurück.
- CSTRING GetName()
Erfrägt den Namen des Wurzelobjekts. Dazu wird der Namen der zugeordneten Wurzelklasse verwendet.
- CSTRING GetClassName()
Erfrägt den Namen der Wurzelklasse aus der das Wurzelobjekt instanziiert wurde.
- gs_RootClass* GetClassP()
Liefert den Zeiger auf das dem Wurzelobjekt zugeordnete Wurzelklasse.
- BOOL TestBoundBox( BoundBox& boundbox )
- const RotLat& GetToWorld()
Gibt die Transformationsmatrix zurück, welche die Position des Wurzelobjektes in der Welt angibt.
- void Freeze( const RotLat& rotlatinit, BOOL useparenttrafo=TRUE )
Fixiert des Wurzelobjekt durch das Einfrieren des Objektgelenks ObjectJoint. Enthält das Wurzelobjekt untergeordnete Unterobjekte, so werden diese ebenfalls fixiert. Mittels des Parameters rotlatinit kann eine Transformationsmatrix übergeben werden, falls das Objekt an einer anderen Stelle sich befinden soll. Der zweite Parameter useparenttrafo erlaubt es anzugeben, ob die Transformation durch das zugeordnete Gelenk verwendet werden soll.
Erst nachdem das Wurzelobjekt eingefroren wurde, kann auf die geometrischen Elemente zugegriffen werden. Zu den geometrischen Elementen zählen dabei die Flächen, Merkmale und Eckpunkte des Objektelements.
- void Melt()
Taut das Wurzelobjekt wieder auf. Es können jetzt Veränderungen an den Zuständen der Gelenke vorgenommen werden.
- istream& Scan( istream& in )
ostream& Print( ostream& out )
Ein- und Ausgabe des Wurzelobjektes über Streams.
TNode
Vector3D
Face3D
BoundBox
gs_Face3D
gs_Feature
gs_Solid
gs_RootClass
gs_Object
Übersicht
Die Klasse gs_GeoSym ist der zentrale Knoten der Bibliothek geosym. Die Klasse gs_GeoSym verwaltet Klassen
und Objekte
und gewährt den Zugriff auf einzelne Klassen
oder Objekte
.
gs_GeoSym ist von keiner anderen Klasse abgeleitet
class gs_GeoSym
enum State
{
min=0, max=1, unknown=-1, cut=-2
};
- int GetClassLen()
gs_RootClass& GetClass( int index )
Listenaccessoren für den Zugriff auf eine Wurzelklasse.
- gs_RootClass* GetClassP( CSTRING name )
Gibt die Wurzelklasse mit den durch name spezifizierten Namen zurück. Wurde die Wurzelklasse nicht gefunden, liefert die Methode NULL zurück.
- int GetObjectLen()
gs_RootObject& GetObject( int index )
Listenaccessoren für den Zugriff auf ein Wurzelobjekt.
- gs_RootObject* GetObjectP( CSTRING name )
Gibt das Wurzelobjekt mit den durch name spezifizierten Namen zurück. Wurde das Wurzelobjekt nicht gefunden, liefert die Methode NULL zurück.
- gs_RootClass* AddRootClass( gs_RootClass* rootclass )
Diese Methode fügt der Klassenliste eine weitere Klasse hinzu. Der Zeiger auf die Wurzelklasse rootclass muß dabei der Methode übergeben werden.
- gs_GeoSym& AddRootObject( gs_RootObject* rootobject )
Mit dieser Methode kann der Liste der Objekte ein weiteres Objekt hinzugefügt werden. Ähnlich wie bei der Methode AddRootClass muß auch dieser Methode der Zeiger auf eine Instanz vom Typ gs_RootObject übergeben werden.
- void Fix()
void UnFix()
Die Methode Fix() dient dazu, die in der Klasse gs_GeoSym enthaltenen Listen zu fixieren, d.h. die Knoten werden nicht mehr eigens gespeichert, sondern alle Knoten der Liste werden in einem Array abgelegt. Das hat zur folge, daß Zugriffe auf die Listenelemente sich wesentlich beschleunigen. Durch die Methode UnFix() wird das Array wieder in einzelne Knoten aufgelöst.
Ist die Klasse fixiert, können die Listen nicht mehr verändert werden.
- void Freeze( const RotLat& rotlatinit )
Friert alle enthaltenen Wurzelobjekte ein. Enthält das Wurzelobjekt untergeordnete Unterobjekte, so werden diese ebenfalls eingefroren. Mittels des Parameters rotlatinit kann eine Transformationsmatrix übergeben werden, falls die Objekte sich an einer anderen Stelle befinden sollen.
Erst nachdem die Objekte eingefroren wurden, kann auf die geometrischen Elemente zugegriffen werden. Zu den geometrischen Elementen zählen dabei die Flächen, Merkmale und Eckpunkte der Objekte.
- void Melt()
Taut die enthaltenen Objekte wieder auf. Es können jetzt Veränderungen an den Zuständen der Gelenke von Objekten vorgenommen werden.
- istream& Scan( istream& in )
ostream& PrintClasss( ostream& out ) const
ostream& PrintObjects( ostream& out ) const
ostream& Print( ostream& out ) const
Ein- und Ausgabe über Streams.
RotLat
BoundBox
gs_RootClass
gs_RootObject
Übersicht
Stefan Unterholzner
Lehrstuhl für Prozessrechner
Technische Universität München
$Id: geosym.html,v 1.4 1996/06/07 10:15:29 uholzner Exp $