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

IndexOct Klassenreferenz

'Indizierter' Oktalbaum. Mehr...

#include <index_oct.h>

Klassendiagramm für IndexOct:

OctStruct Aufstellung aller Elemente

Öffentliche Datenelemente

 IndexOct (Hight maxTreeHight) throw (NotEnoughMemoryException*)
 Default-Konstrukor.

void add (NodeIndex p, Color color) throw (NotEnoughMemoryException*)
 Fügt den neuen Knoten mit dem Index p und der Farbe color zur Oktalbaumstruktur hinzu.

void add (Surface *s, Color color) throw (NotEnoughMemoryException*)
 Fügt die Oberfläche s mit der Farbe color in den Oktalbaum ein.

bool exist (NodeIndex p)
 Befindet sich der Knoten mit Index p im Oktalbaum?

NodeIndex getChild (NodeIndex parent, PartType i)
 Liefert den Index des i-ten Unterknotens.

Color getColor (NodeIndex p)
 Liefert die Knotenfarbe.

NodeIndex getExistNode (NodeIndex p)
 Falls p der Index eines existierenden Knotens ist, liefert es p, ansonsten den tiefsten existierenden Vater.

Hight getMaxTreeHight ()
 Liefert die maximale Baumhöhe.

bool isLeaf (NodeIndex p)
 Ist p Blattknoten.

bool isIn (NodeIndex p)
 Kann sich p innerhalb des Oktalbaumes befinden, wenn der Oktalbaum vollständig besetzt ist (alle Blätter befinden sich auf der Höhe BASE_NODE_HIGHT) ?

void setColor (NodeIndex p, Color color)
 Setzt die Knotenfarbe.


Öffentliche, statische Datenelemente

AxIndex getPartOfs (PartType partNumber, Axis axis)
 Liefert den Offset, der aus der Unterpartionsnummer und der Achsnummer resultiert.


Geschützte Datenelemente

Hight getExistNode (NodeIndex p, _octree &subtree)
 Falls p der Index eines existierenden Knotens ist, liefert es p.getHight(), ansonsten die Höhe des tiefsten existierenden Vaters.

bool isIn (NodeIndex p, Hight h)
 Befindet sich der Knoten mit dem Index p nicht unterhalb der Höhe h?


Private Datenelemente

void add (_octree parent, NodeIndex myIdx, Surface *s, Color color) throw (NotEnoughMemoryException*)
 Fügt die Knoten, die sich auf der Oberfläche s befinden, mit der Farbe color in den Oktalteilbaum subtree ein.

PartType getPart (AxIndex idx, Hight h)
 Liefert die Unterpartition einer Achse für den Knoten auf dem Ast an der Höhe h.

PartType getPart (NodeIndex p, Hight h)
 Liefert die Unterpartition für den Knoten auf dem Ast an der Höhe h.


Private Attribute

Hight rootHight
 Höhe des Wurzelknotens.


Ausführliche Beschreibung

'Indizierter' Oktalbaum.

Stellt Operationen für die Oktalbaumbearbeitung zur Verfügung, wobei die Knoten der Oktalbaumstruktur über den Knotenindex referenziert werden.


Beschreibung der Konstruktoren und Destruktoren

IndexOct::IndexOct Hight    maxTreeHight throw (NotEnoughMemoryException*)
 

Default-Konstrukor.

Parameter:
maxTreeHight  maximale Baumhöhe
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um die neue Oktalbaumstruktur zu allozieren.


Dokumentation der Elementfunktionen

void IndexOct::add _octree    parent,
NodeIndex    myIdx,
Surface   s,
Color    color
throw (NotEnoughMemoryException*) [private]
 

Fügt die Knoten, die sich auf der Oberfläche s befinden, mit der Farbe color in den Oktalteilbaum subtree ein.

myIdx entspricht den Index des Wurzelknotens des Teilbaums. myIdx wird benötigt, um zu erkennen inwieweit subtree für das Hinzufügen der Oberfläche überhaupt relevant ist.

Parameter:
parent  Oktalteilbaum
myIdx  Index des Wurzelknotens des Oktalteilbaums
s  Surface
color  Farbe
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um neue Oktalbaumstrukturteile zu allozieren.
Vorbedingung:
isIn(myIdx)
s != NULL

void IndexOct::add Surface   s,
Color    color
throw (NotEnoughMemoryException*)
 

Fügt die Oberfläche s mit der Farbe color in den Oktalbaum ein.

Parameter:
s  Oberfläche
color  Farbe
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um neue Oktalbaumstrukturteile zu allozieren.
Vorbedingung:
s != NULL
s.getHight() = BASE_NODE_HIGHT

void IndexOct::add NodeIndex    p,
Color    color
throw (NotEnoughMemoryException*)
 

Fügt den neuen Knoten mit dem Index p und der Farbe color zur Oktalbaumstruktur hinzu.

Parameter:
p  Knotenindex
color  Knotenfarbe
Ausnahmebehandlung:
NotEnoughMemoryException  Nicht genügend Speicher, um die neue Oktalbaumstruktur zu allozieren.
Vorbedingung:
0 <= p.getHight() <= getMaxTreeHight()

bool IndexOct::exist NodeIndex    p
 

Befindet sich der Knoten mit Index p im Oktalbaum?

Parameter:
p  Knotenindex
Rückgabe:
p referenziert den Wurzelknoten oder ( es existiert der Vater von p und dann ist p's Vater kein Blatt)

NodeIndex IndexOct::getChild NodeIndex    parent,
PartType    i
 

Liefert den Index des i-ten Unterknotens.

Parameter:
parent  Eltern-Index
i  Nr. der Unterpartition
Rückgabe:
i-ter Kindsindex
Vorbedingung:
parent.getHight() != BASE_NODE_HIGHT and isIn(parent)

Color IndexOct::getColor NodeIndex    p
 

Liefert die Knotenfarbe.

p darf keinen inneren Knoten referenzieren. Falls p nicht existiert, liefert es getColor seines 'virtuellen' Vaters.

Parameter:
p  Knotenindex
Vorbedingung:
isLeaf(p') mit p' tiefster existierender Vater (incl. p)

Hight IndexOct::getExistNode NodeIndex    p,
_octree   subtree
[protected]
 

Falls p der Index eines existierenden Knotens ist, liefert es p.getHight(), ansonsten die Höhe des tiefsten existierenden Vaters.

node enthält den entsprechenden Knoten.

Parameter:
p  Knotenindex
subtree  Zeiger auf den existierenden Knoten
Rückgabe:
Asthöhe
Nachbedingung:
getExistNode(p, node) >= p.getHight()
octree != NULL

NodeIndex IndexOct::getExistNode NodeIndex    p
 

Falls p der Index eines existierenden Knotens ist, liefert es p, ansonsten den tiefsten existierenden Vater.

Parameter:
p  Knotenindex
Rückgabe:
tiefster existierender Vater (wobei p selbst als Vater von p zählt)
Nachbedingung:
getExistNode(p).getHight() >= p.getHight()

Hight IndexOct::getMaxTreeHight  
 

Liefert die maximale Baumhöhe.

Rückgabe:
maximale Baumhöhe

PartType IndexOct::getPart NodeIndex    p,
Hight    h
[private]
 

Liefert die Unterpartition für den Knoten auf dem Ast an der Höhe h.

Parameter:
p  Knotenindex
h  Höhe der zubetrachtenden Stelle des Astes
Rückgabe:
Unterpartion an der Stelle h

PartType IndexOct::getPart AxIndex    idx,
Hight    h
[private]
 

Liefert die Unterpartition einer Achse für den Knoten auf dem Ast an der Höhe h.

Parameter:
idx  Achs-Index des Knotens
h  Höhe der zubetrachtenden Stelle des Astes
Rückgabe:
Unterpartion für die Achse an der Stelle h

AxIndex IndexOct::getPartOfs PartType    partNumber,
Axis    axis
[static]
 

Liefert den Offset, der aus der Unterpartionsnummer und der Achsnummer resultiert.

Parameter:
partNumber  Nummer der Unterpartition
axis  Nummer der Index-Achse
Rückgabe:

bool IndexOct::isIn NodeIndex    p,
Hight    h
[protected]
 

Befindet sich der Knoten mit dem Index p nicht unterhalb der Höhe h?

Parameter:
p  Knoten-Index
h  Vergleichshöhe
Rückgabe:
p.getHight() >= h
Zu beachten:
Ist h die minimale Blatthöhe des Astes auf dem p liegt, liefert isIn(p, h), ob p existiert.

bool IndexOct::isIn NodeIndex    p
 

Kann sich p innerhalb des Oktalbaumes befinden, wenn der Oktalbaum vollständig besetzt ist (alle Blätter befinden sich auf der Höhe BASE_NODE_HIGHT) ?

Parameter:
p  Knoten-Index
Rückgabe:

bool IndexOct::isLeaf NodeIndex    p
 

Ist p Blattknoten.

p muss existieren.

Parameter:
p  Knotenindex
Rückgabe:
Ob p Blattknoten ist.
Vorbedingung:
exist(p)

void IndexOct::setColor NodeIndex    p,
Color    color
 

Setzt die Knotenfarbe.

p darf keinen inneren Knoten referenzieren. Falls p nicht existiert, führt es setColor seines 'virtuellen' Vaters aus.

Parameter:
p  Knotenindex
color  neue Knotenfarbe
Vorbedingung:
isLeaf(p')


Dokumentation der Datenelemente

Hight IndexOct::rootHight [private]
 

Höhe des Wurzelknotens.

Ist mit der Maximalhöhe des Baums identisch.


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