Download Diplomarbeit
Transcript
Kapitel 8: Programmierhandbuch
69
Für den kontinuierlichen Zugriff auf den selektierten 3D-Datensatz ist die Funktion
public float getFunktionValue(float x, float y, float z)
definiert, die in Abhängigkeit der Interpolationsmethode einen Grauwert in einem bestimmten
Raumpunkt ausliest. Dazu ist zu testen, ob der 3D-Datensatz den Raumpunkt überdeckt. Das
Bezugssystem für alle Berechnungen ist das vom bildgebenden System bestimmte Patientenkoordinatensystem. Auch die Bilderzeugung hinsichtlich einer gewählten Schicht basiert auf dieser
Funktion, soll aber erst in Kapitel 8.4 beschrieben werden.
8.3.5
Das Paket graphics
Für die Darstellung der Schichten und Volumina ist eine geeignete Festkörpermodellierung zu
finden, die Operationen wie Rotation und Translation erlaubt und wiederum gültige Körper liefert. Dabei ist ein kompakte, platzsparende Darstellung zu erzielen, die die schnelle Verarbeitung
durch Algorithmen (verdeckte Flächen finden) erlaubt.
Aufgrund der einfachen Geometrie (es werden nur rechtwinklige Quader verwendet) der betrachteten Körper bietet sich ein einfaches Drahtmodell an, das den Körper durch die Ränder
seiner Oberflächen beschreibt (Ecken, Kanten, Seitenflächen). Dieser einfache Polyeder kann
durch eine Liste mit den Koordinaten der acht Eckpunkte explizit dargestellt werden.
Körper V = {(x 1 , y1 , z1 ), (x 2 , y 2 , z 2 ), ", (x 8 , y8 , z 8 )}
Abbildung 51: Drahtmodell eines Würfels mit Knotenmenge [Fole94]
Die Hauptklasse des Pakets graphics ist Cube, die als Oberklasse die Festkörpermodellierung
der auftretenden Volumina steuert. Dem Konstruktor werden dazu die acht Eckpunkte des zu
umschreibenden Quaders übergeben. Mit der Angabe eines Projektionszentrums ist die Berechnung von parallelen Projektionen möglich. Als Operatoren werden zusätzlich Rotationen, Transformationen und Translationen der Volumina sowie ein Algorithmus der verdeckten Kannten
findet, unterstützt. Die Methode
public void drawCube(Graphics2D g, float YConstant, float XConstant,
float scale)