Das SBW-Format4.13ermöglicht es, G-Spline-Flächen durch zusammensetzen von gleichgroßen
Würfeln mit der Seitenlänge zu erzeugen. Die Ecken der Würfel
legen dabei die Kontrollpunkte fest. Die Polygone für das Kontrollnetz
werden aus den Seiten der Würfel gebildet. Dabei sind aber nur die
Seiten zu berücksichtigen, die nur Teil eines einzigen Würfels sind.
Alle anderen liegen innerhalb oder außerhalb des Körpers. Um die
Flächen interessanter zu gestalten, kann man die Würfel auch noch
längs ihrer
-,
- oder
-Achse verdrehen. Hierzu müssen nur
die Kontrollpolygone jeweils um eine Seite versetzt gewählt werden.
Neben der Fläche selbst können wir auch gleich eine Funktion auf
dieser Fläche über Funktionskontrollpunkte bestimmen. Dies wird über
eine von den Koordinaten des Flächenkontrollpunktes abhängige
Parametrisierung erreicht. Durch zweimaliges anwenden der
Doo-Sabin-Subdivision kann man aus so erzeugten Kontrollnetzen
semi-reguläre Kontrollnetze für biquadratische G-Splines erzeugen.
Die Anordnung der Würfel kann über eine ASCII Datei festgelegt werden.
Wir geben dabei nacheinander die -
-Ebenen in
-Richtung an.
Das so erzeugte SBW-Format hat folgende Form:
Die Zeilenumbrüche werden hier berücksichtigt. X,
Y und Z geben die maximale Anzahl der Würfel
in -,
-, und
-Richtung an. Dabei wird vom Ursprung in die
jeweilige positive Richtung gezählt. Optional kann man eine Funktion
func im Perl Syntax angeben, welche die
Funktionskontrollpunkte festlegt. Diese kann auf die Koordinaten
$x, $y, $z des Flächenkontrollpunktes
zugreifen. Die Würfel werden durch den Rest der Datei bestimmt. Dazu
wird der Raum in ein drei-dimensionales Gitter zerlegt. Die Belegung
der einzelnen Zellen wird durch das Array
bestimmt. Ein .
markiert eine leere Zelle, ein * einen Würfel in dieser
Zelle, x ,X, y, Y, z und
Z markieren Zellen, in denen der Würfel um die
-,
- oder
-Achse verdreht wurde.
Die in Abbildung 4.2 dargestellte Fläche wurde mit Hilfe der folgenden SBW-Datei erzeugt:
2x2x2;$x*$x+$y*$y+$z*$z |
** |
y. |
*. |
.. |
Das Perlskript sbw2odl.pl konvertiert eine Datei im SBW-Format in das ODL-Format. Die SBW-Dateien werden dazu als Argumente übergeben.