Hauptseite   Klassenhierarchie   Übersicht   Auflistung der Dateien   Datenstruktur-Elemente   Datei-Elemente  

OctStruct Klassenreferenz

Oktalbaumstruktur. Mehr...

#include <oct_struct.h>

Klassendiagramm für OctStruct:

IndexOct PotWriter Aufstellung aller Elemente

Öffentliche Typen

typedef Node_octree
 Oktalbaumstruktur-Typ.


Öffentliche Datenelemente

void clear ()
 Löscht die Oktalbaumstruktur.

bool empty ()
 Ist die Oktalbaumstruktur leer?

void flush ()
 Gewährleistet, dass die Oktalbaumstruktur minimiert ist.

Color getMaxColor ()
 Liefert den höchsten Farbwert zurück, den die Oktalbaumblätter enthalten.

size_t getNodeSize ()
 Liefert die Größe eines Knotens im Speicher in Bytes.

_octreegetTree ()
 Liefert die Oktalbaumstruktur.

void print ()
 Gibt den Oktalbaum auf der Konsole aus.

void stat (Hight h, unsigned &sumNodes, unsigned &leafs, unsigned &innerNodes, unsigned &borderNodes, unsigned &normCells)
 Liefert die Statistik über das Modell.


Geschützte Datenelemente

 OctStruct () throw (NotEnoughMemoryException*)
 Default-Konstruktor.

_octree createLeafs () throw (NotEnoughMemoryException*)
 Erzeugt ein neue Oktalbaumstruktur mit OCT_PARTS Blättern, die zu keinem Körper gehören.

_octree createOneLeaf () throw (NotEnoughMemoryException*)
 Erzeugt ein Blattknoten, der zu keinem Körper gehören.

bool exist (_octree tree)
 Gibt es tree?

_octree getChild (_octree parent, PartType i)
 Liefert den Zeiger auf die i-te direkte Unterpartition.

Color getColor (Node node)
 Liefert die Farbe eines Blattknotens.

bool isLeaf (Node node)
 Ist der Knoten node ein Blatt?

bool isNoObject (Node node)
 Gehört der Knoten zu keinem Körper?

bool isUndefObj (Node node)
 Ist undefiniert, ob der Knoten zu einem / zu welchem Körper gehört?

void remove (_octree &subtree)
 Löscht die Teil-Oktalbaumstruktur und gibt den Speicher wieder frei.

void setColor (Node &node, Color color)
 Setzt die Farbe des Blatts.

void setTree (_octree &tree) throw (NotEnoughMemoryException*)
 Ersetzt die Oktalbaumstruktur durch tree.


Geschützte Attribute

unsigned countBorderNodes
 Anzahl der eingef"ugten Randknoten.


Private Datenelemente

bool canCompact (Node node, Color &color)
 Überprüft, ob sich die direkten Unterpartitionen zusammenfassen lassen.

void compact (Node &node)
 Minimiert den gesamten Baum, der sich unter node befindet, indem Unterpartitionen mit gleicher Farbe zusammengefasst werden.

void compact (Node &node, Color color)
 Kompaktisiert den Knoten node zu einem Blatt der Farbe color.

void printTree (Node node)
 Gibt den Oktalbaum, der sich node befindet (incl.

void setLeaf (Node &node)
 Definiert node als Blattknoten.

void stat (_octree tree, Hight h, unsigned &sumNodes, unsigned &leafs, unsigned &innerNodes, unsigned &normCells)
 Traversiert über den Oktalbaum, um die Statistik für das Modell zu ermitteln.


Private Attribute

_octree root
 Adresse des Wurzelknotens der Oktalbaumstruktur.


Ausführliche Beschreibung

Oktalbaumstruktur.

Unterste Schicht. Stellt Low-Level-Operationen für die Oktalbaumsturktur zur Verfügung.


Beschreibung der Konstruktoren und Destruktoren

OctStruct::OctStruct   throw (NotEnoughMemoryException*) [protected]
 

Default-Konstruktor.

Erzeugt einen neuen leeren Oktalbaum.

Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um die neue Oktalbaumstruktur zu allozieren.


Dokumentation der Elementfunktionen

bool OctStruct::canCompact Node    node,
Color   color
[private]
 

Überprüft, ob sich die direkten Unterpartitionen zusammenfassen lassen.

In die Überprüfung werden nur die direkten Kinderknoten einbezogen.

Parameter:
node  Knoten
color  Farbe aller Unterpartitionen, wenn alle die gleiche Farbe haben. Undefiniert, falls sich die direkten Unterpartitionen nicht zusammenfassen lassen.

void OctStruct::clear  
 

Löscht die Oktalbaumstruktur.

Gibt den für den Oktalbaum eventuell allozierten Speicher wieder frei und definiert den Wurzelknoten als Blatt, welches zu keinem Körper gehört.

void OctStruct::compact Node   node,
Color    color
[private]
 

Kompaktisiert den Knoten node zu einem Blatt der Farbe color.

Parameter:
node  Knoten
color  Farbe

void OctStruct::compact Node   node [private]
 

Minimiert den gesamten Baum, der sich unter node befindet, indem Unterpartitionen mit gleicher Farbe zusammengefasst werden.

Parameter:
node  Knoten

_octree OctStruct::createLeafs   throw (NotEnoughMemoryException*) [protected]
 

Erzeugt ein neue Oktalbaumstruktur mit OCT_PARTS Blättern, die zu keinem Körper gehören.

Rückgabe:
neue Oktalbaumstruktur
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um die neue Oktalbaumstruktur zu allozieren.
Nachbedingung:
return != NULL

_octree OctStruct::createOneLeaf   throw (NotEnoughMemoryException*) [protected]
 

Erzeugt ein Blattknoten, der zu keinem Körper gehören.

Rückgabe:
neuer Blattknoten
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um den neuen Blattknoten zu allozieren.
Nachbedingung:
return != NULL

bool OctStruct::empty  
 

Ist die Oktalbaumstruktur leer?

Rückgabe:
true, falls nach einem flush() der Wurzelknoten ein Blatt ist, welches zu keinem Körper gehört.
false, ansonsten

bool OctStruct::exist _octree    tree [protected]
 

Gibt es tree?

Rückgabe:
tree != NULL

void OctStruct::flush  
 

Gewährleistet, dass die Oktalbaumstruktur minimiert ist.

Sugessive: Falls ein Knoten nur Blätter gleicher Farbe enthält, werden die Blätter gelöscht. Der Knoten wird zum Blatt und übernimmt die Farbe seiner Blätter.

_octree OctStruct::getChild _octree    parent,
PartType    i
[protected]
 

Liefert den Zeiger auf die i-te direkte Unterpartition.

Parameter:
parent  Baum-Vaterknoten
i  Nr. der Unterpartition
Rückgabe:
Zeiger auf den i-ten Kindsknoten
Vorbedingung:
exist(parent)
!isLeaf(*parent)

Color OctStruct::getColor Node    node [protected]
 

Liefert die Farbe eines Blattknotens.

Parameter:
node  Blattknoten
Rückgabe:
Farbe des Blattknotens
Vorbedingung:
isLeaf(node)

Color OctStruct::getMaxColor  
 

Liefert den höchsten Farbwert zurück, den die Oktalbaumblätter enthalten.

Rückgabe:
\f{ \max_{ {\mbox{node}\ \in \ \mbox{OctStruct}\ |\ \mbox{isLeaf(node)} } } {\mbox{getColor(node)} } \f}

size_t OctStruct::getNodeSize  
 

Liefert die Größe eines Knotens im Speicher in Bytes.

Rückgabe:
von einem Knoten belegter Speicher / Bytes

_octree& OctStruct::getTree  
 

Liefert die Oktalbaumstruktur.

Rückgabe:
Adresse des Wurzelknotens der Oktalbaumstruktur.

bool OctStruct::isLeaf Node    node [protected]
 

Ist der Knoten node ein Blatt?

Rückgabe:
true, falls node ein Blatt ist.
false, falls node ein innerer Knoten ist.

bool OctStruct::isNoObject Node    node [protected]
 

Gehört der Knoten zu keinem Körper?

Vorbedingung:
isLeaf(node) return getColor(node) == NO_OBJECT

bool OctStruct::isUndefObj Node    node [protected]
 

Ist undefiniert, ob der Knoten zu einem / zu welchem Körper gehört?

Vorbedingung:
isLeaf(node) return getColor(node) == UNDEF_OBJ

void OctStruct::printTree Node    node [private]
 

Gibt den Oktalbaum, der sich node befindet (incl.

node) auf dem Bildschirm aus.

Parameter:
node  Knoten

void OctStruct::remove _octree   subtree [protected]
 

Löscht die Teil-Oktalbaumstruktur und gibt den Speicher wieder frei.

Tut nichts, falls subtree == NULL.

Parameter:
subtree  Teil-Oktalbaumstruktur

void OctStruct::setColor Node   node,
Color    color
[protected]
 

Setzt die Farbe des Blatts.

Parameter:
node  Blattknoten
color  Blattfarbe
Vorbedingung:
isLeaf(node);
color >= NO_OBJECT

void OctStruct::setLeaf Node   node [private]
 

Definiert node als Blattknoten.

Parameter:
node  Knoten
Zu beachten:
Für Unterpartitionen eventuell allozierter Speicher wird nictht wieder freigegeben.

void OctStruct::setTree _octree   tree throw (NotEnoughMemoryException*) [protected]
 

Ersetzt die Oktalbaumstruktur durch tree.

Zum Freigeben des Speichers, der durch die alte Oktalbaumstruktur belegt ist, muss explizit clear() aufgerufen werden.

Parameter:
tree  neue Oktalbaumstruktur
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um die neue Oktalbaumstruktur zu allozieren.

void OctStruct::stat _octree    tree,
Hight    h,
unsigned &    sumNodes,
unsigned &    leafs,
unsigned &    innerNodes,
unsigned &    normCells
[private]
 

Traversiert über den Oktalbaum, um die Statistik für das Modell zu ermitteln.

Parameter:
tree  Oktal(teil)baum
h  (Teil)Baumhöhe
sumNodes  Anzahl aller Oktalbaum-Knoten
leafs  Anzahl der Blätter
innerNodes  Anzahl der inneren Knoten
normCells  Anzahl der Normzellen der Geometrie (unterste Ebene)

void OctStruct::stat Hight    h,
unsigned &    sumNodes,
unsigned &    leafs,
unsigned &    innerNodes,
unsigned &    borderNodes,
unsigned &    normCells
 

Liefert die Statistik über das Modell.

Parameter:
h  Baumhöhe
sumNodes  Anzahl aller Oktalbaum-Knoten
leafs  Anzahl der Blätter
borderNodes  Anzahl der Randknoten der Geometrie
innerNodes  Anzahl der inneren Knoten
normCells  Anzahl der Normzellen der Geometrie (unterste Ebene)


Dokumentation der Datenelemente

_octree OctStruct::root [private]
 

Adresse des Wurzelknotens der Oktalbaumstruktur.

Invariant:
root != NULL


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:
Erzeugt am Fri Mar 14 19:44:51 2003 für cad2octree von doxygen1.2.16