13.07.2015 Aufrufe

Entwicklung eines CAD-Systems für den Unterrichtseinsatz

Entwicklung eines CAD-Systems für den Unterrichtseinsatz

Entwicklung eines CAD-Systems für den Unterrichtseinsatz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Diplomarbeit<strong>Entwicklung</strong> <strong>eines</strong> <strong>CAD</strong>-<strong>Systems</strong> <strong>für</strong><strong>den</strong> <strong>Unterrichtseinsatz</strong>Ausgeführt am Institut <strong>für</strong>Diskrete Mathematik und Geometrieder Technischen Universität Wienunter der Anleitung vonAo. Univ. Prof. Mag.rer.nat. Dr.techn. Martin PETERNELLdurchMarko KNÖBLBaumgarten 21, 7122 Gols15. Juli 2013


InhaltsverzeichnisZusammenfassung 11 Grundlagen der Boundary Representation und Béziergeometrie 21.1 Repräsentationsformen geometrischer Modelle . . . . . . . . . . . . . 21.2 Beschreibung geometrischer Objekte in der B-rep-Darstellung . . . . . 31.3 Topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.1 Die Winged-Edge Datenstruktur . . . . . . . . . . . . . . . . . 61.3.2 Euler Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . 71.4 Béziergeometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4.1 Der Algorithmus von de Casteljau . . . . . . . . . . . . . . . . 91.4.2 Die Bernsteinform von Bézierkurven . . . . . . . . . . . . . . 101.4.3 Ableitung von Bézierkurven . . . . . . . . . . . . . . . . . . . 121.4.4 Formeigenschaften von Bézierkurven . . . . . . . . . . . . . . 131.4.5 Rationale Bézierkurven . . . . . . . . . . . . . . . . . . . . . . 141.4.6 Kegelschnitte als rationale Bézierkurven . . . . . . . . . . . . 151.4.7 Zusammengesetzte Kurven . . . . . . . . . . . . . . . . . . . . 181.4.8 Rationale Bézierflächen . . . . . . . . . . . . . . . . . . . . . . 182 Geometrische Konstruktionen und Algorithmen 202.1 Freiformkurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.1.1 Kubische Hermiteinterpolation . . . . . . . . . . . . . . . . . . 202.1.2 Kubische C 2 -Spline-Interpolation . . . . . . . . . . . . . . . . 212.1.3 B-Spline-Kurven . . . . . . . . . . . . . . . . . . . . . . . . . 222.2 Besondere Flächenklassen . . . . . . . . . . . . . . . . . . . . . . . . 252.2.1 Regelflächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.2 Rotationsflächen . . . . . . . . . . . . . . . . . . . . . . . . . 262.3 Schnitte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3.1 Schnittpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3.2 Schnittkurven . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.4 Boolesche Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . 292.4.1 Regularisierte boolesche Operationen . . . . . . . . . . . . . . 292.4.2 Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Benutzeroberfläche 333.1 Übersicht über andere Programme . . . . . . . . . . . . . . . . . . . . 333.1.1 <strong>CAD</strong>-3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33i


Inhaltsverzeichnis3.1.2 SketchUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.1.3 GAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.1.4 MicroStation . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2 Eingabemetho<strong>den</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.1 Punkteingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.2.2 Eingabe numerischer Größen . . . . . . . . . . . . . . . . . . . 393.2.3 Benutzerkoordinatensysteme . . . . . . . . . . . . . . . . . . . 393.3 Grundobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.4 Raumtransformationen . . . . . . . . . . . . . . . . . . . . . . . . . . 423.5 Boolesche Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . 433.5.1 Vereinigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.5.2 Durchschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5.3 Differenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Implementierung 474.1 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.2 Grundobjekte und Objekttypen . . . . . . . . . . . . . . . . . . . . . 484.3 Objektmodellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.4 Objektdarstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.5 Dokumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.6 Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.7 Programmstruktur und Überblick . . . . . . . . . . . . . . . . . . . . 555 Schlussbemerkungen 57Literaturverzeichnis 59ii


ZusammenfassungZiel dieser Arbeit ist die <strong>Entwicklung</strong> <strong>eines</strong> Computerprogramms <strong>für</strong> Computer AidedDesign (<strong>CAD</strong>), welches <strong>für</strong> <strong>den</strong> Schulunterricht insbesondere im UnterrichtsfachGeometrisches Zeichnen konzipiert ist.In <strong>den</strong> ersten bei<strong>den</strong> Kapiteln wer<strong>den</strong> wir uns mit der internen Repräsentation geometrischerModelle in <strong>CAD</strong>-Systemen befassen sowie darauf aufbauend Algorithmen<strong>für</strong> das Erstellen und Ändern derartiger Modelle beschreiben. In diesem Zusammenhangwer<strong>den</strong> wir uns insbesondere mit der Béziergeometrie und der BoundaryRepresentation beschäftigen, welche in <strong>den</strong> meisten der heutzutage verwendeten<strong>CAD</strong>-Programme zum Einsatz kommen.Im dritten Kapitel sollen sodann Überlegungen zu der Benutzeroberfläche des Programmsangestellt wer<strong>den</strong>. Basierend auf einer Untersuchung von im Schulunterrichtverwendeten <strong>CAD</strong>-Systemen wer<strong>den</strong> wir hier eine Oberfläche entwickeln, welche einemöglichst einfache Bedienung ermöglichen soll.Schließlich wer<strong>den</strong> wir uns im vierten Kapitel mit der Implementierung sowie derdazu verwendeten Softwareplattform Open CAS<strong>CAD</strong>E beschäftigen. Außerdem wer<strong>den</strong>wir in diesem Kapitel darstellen, wie das resultierende Programm auf einfacheWeise durch weitere Werkzeuge ergänzt wer<strong>den</strong> kann.DanksagungIch möchte mich herzlich bei meinem Betreuer Martin Peternell <strong>für</strong> die Ermöglichungdieser Diplomarbeit und die Unterstützung bei der Ausführung bedanken.Weiters gilt mein Dank meiner Familie, insbesondere meinen Eltern Elisabeth undJakob Knöbl, <strong>für</strong> ihre Unterstützung während m<strong>eines</strong> gesamten Studiums.Die <strong>Entwicklung</strong> des im Rahmen dieser Arbeit entstan<strong>den</strong>en Computerprogrammswäre nicht möglich gewesen ohne die Vielzahl an existierender Freier Software, aufder dieses aufbaut. Mein Dank geht hier an die Entwickler von Open CAS<strong>CAD</strong>E,OCE und insbesondere an Jelle Feringa und Thomas Paviot <strong>für</strong> Ihre Arbeitan pythonOCC.Abschließend möchte ich mich bei all meinen Professoren und Studienkollegen bedanken,sowie bei meinen Freun<strong>den</strong>, die mich in diesem Lebensabschnitt begleiteten.1


1 Grundlagen der BoundaryRepresentation undBéziergeometrie1.1 Repräsentationsformen geometrischer ModelleComputermodelle zur Repräsentation dreidimensionaler geometrischer Modelle wur<strong>den</strong>erstmals in in <strong>den</strong> frühen 1960er Jahren genutzt. Seither haben sich verschie<strong>den</strong>steDarstellungsformen entwickelt, die sich bezüglich ihrer Genauigkeit und Flexibilitätvoneinander unterschei<strong>den</strong> und jeweils in verschie<strong>den</strong>en Gebieten Anwendungfin<strong>den</strong>.Die erste computergestützte Darstellung geometrischer Objekte geschah durch Drahtgittermodelle.Dabei wird die Oberfläche von Modellen alleine durch Ecken undKanten repräsentiert. Später wur<strong>den</strong> in <strong>den</strong> sogenannten Polygonnetzmodellen nebenEcken und Kanten auch Flächen erfasst, meist als ebene Drei- oder Vierecke.Diese erlaubten erstmals die computergesteuerte maschinelle Herstellung von Bauteilen,beispielsweise in der Automobilindustrie. Der Schritt von Flächen- zu Volumsmodellenerfolgte in <strong>den</strong> 1970er Jahren. Mit dieser <strong>Entwicklung</strong> war es dannmöglich, auch physikalische Eigenschaften von Modellen, wie Masse, Schwerpunktund Belastbarkeit, zu bestimmen beziehungsweise zu simulieren.Die einfachste Möglichkeit zum Darstellen von Volumsmodellen ist das Normzellen-Aufzählungsschema. Bei diesem wird der Raum in ein gleichmäßiges Gitter aus würfelförmigenZellen aufgeteilt. Ein Körper wird dann durch jene Zellen repräsentiert,die in seinem Inneren liegen. Für die Beschreibung <strong>eines</strong> Modells in diesem Schemaist es daher notwendig, <strong>für</strong> jede Zelle anzugeben, ob sie im Inneren des Körpers liegt,oder nicht, was dieses Verfahren sehr speicherintensiv macht.Ein Nachteil aller bisher beschriebenen Darstellungsmöglichkeiten ist, dass Modellein vielen Fällen nicht exakt repräsentiert wer<strong>den</strong> können. So erlaubt etwa keine derDarstellungsformen, eine Kugel oder einen Zylinder exakt zu beschreiben. Dies wurdeerstmals durch Constructive Solid Geometry, kurz CSG, ermöglicht. Bei ConstructiveSolid Geometry steht zur Modellierung eine gewisse Menge an Grundkörpern zurVerfügung, aus <strong>den</strong>en Modelle zusammengesetzt wer<strong>den</strong>. Solche Grundkörper könnenbeispielsweise Kugel, Quader, Kegel oder Torus sein. Aus diesen Grundkörpernwer<strong>den</strong> durch die booleschen Operationen Vereinigung, Durchschnitt und Differenz2


1.2 Beschreibung geometrischer Objekte in der B-rep-Darstellungweitere Körper gebildet. Der wesentliche Nachteil von CSG ist die Einschränkungder modellierbaren Objekte auf aus Grundkörpern zusammengesetzte. Im Vergleichzu <strong>den</strong> zuvor beschriebenen Möglichkeiten bietet es also eine höhere Genauigkeit aufKosten der Flexibilität.Ein erweitertes Repertoire an Körpern bei Beibehaltung der Genauigkeit ermöglichtdie Darstellungsform der Verschiebegeometrie (englisch sweeps). Hierbei wer<strong>den</strong> Körperdadurch beschrieben, dass ein vorgegebenes Flächenstück entlang <strong>eines</strong> Pfadesbewegt wird. Der dabei überstrichene Teil des Raums legt <strong>den</strong> Körper fest. Sonderfälleder möglichen Körper sind Drehkörper, bei <strong>den</strong>en eine Fläche um eine Achserotiert, und Extrusionskörper, die durch eine geradlinige Bewegung <strong>eines</strong> Flächenstücksentstehen.Die meisten <strong>CAD</strong>-Systeme verwen<strong>den</strong> heutzutage die Boundary Representation, oftauch als B-rep abgekürzt. Bei der Boundary Representation wer<strong>den</strong> geometrischeObjekte unter anderem über ihre Begrenzung definiert. Ein Körper ist beispielsweisedurch die ihn begrenzen<strong>den</strong> Flächenstücke festgelegt, ein Flächenstück wiederumneben der es enthalten<strong>den</strong> Fläche durch die begrenzen<strong>den</strong> Kanten. In Kombinationmit rationalen Bézierkurven und -flächen können in einem Boundary RepresentationModell viele in <strong>CAD</strong>-Systemen auftretende Körper, wie Kugel, Kegel, Zylinder sowieExtrusions- und Rotationskörper, exakt beschrieben wer<strong>den</strong>.1.2 Beschreibung geometrischer Objekte in derB-rep-DarstellungIn der Boundary Representation oder B-rep-Darstellung wird ein geometrisches Objektüblicherweise durch vier Eigenschaften angegeben, die wir als Form, Begrenzung,Topologie und Positionierung bezeichnen wollen.ΦAbbildung 1.1: Flächenstück in der Boundary RepresentationAls Beispiel da<strong>für</strong> betrachten wir ein Flächenstück, wie es in Abbildung 1.1 angegebenist. Die Form dieses Flächenstücks ist durch die Form der es enthalten<strong>den</strong> FlächeΦ festgelegt. Die Begrenzung innerhalb dieser Fläche geschieht durch zwei Randkurven,die in <strong>den</strong> Flächenparametern gegeben sind. Weiters sind mit diesen auch zwei3


1.2 Beschreibung geometrischer Objekte in der B-rep-DarstellungRaumkurven assoziiert, die in diesem Zusammenhang als Kanten bezeichnet wer<strong>den</strong>.Diese Zuordnung zwischen dem Flächenstück und <strong>den</strong> es begrenzen<strong>den</strong> Kantenbeschreibt die Topologie des Objekts. Schließlich kann das Flächenstück beliebigim Raum positioniert wer<strong>den</strong>. Diese Positionierung wird durch eine Transformationbeschrieben, die Ausgangs- und Endlage ineinander überführt.Nicht <strong>für</strong> jedes Objekt ist die Angabe von sowohl Form als auch Begrenzung notwendig:Für die Beschreibung von Flächen in einem 2D-System reicht etwa die Begrenzungzur eindeutigen Angabe aus - die Form ist in Gestalt der euklidischenEbene schon vorgegeben. Gleiches gilt <strong>für</strong> Körper in einem 3D-System: Diese sinddurch ihre Grenzflächen eindeutig festgelegt. Umgekehrt ist es <strong>für</strong> Punkte nicht notwendig,eine Begrenzung anzugeben.In <strong>CAD</strong>-Systemen wird die Form aller Objekte durch drei Arten von Grundobjektenbeschrieben:Punkt (englisch „point“): Ein Punkt wird durch seine drei Koordinaten bestimmt.Punkte sind die einzigen Objekte, die mittels Koordinaten beschrieben wer<strong>den</strong>.Sowohl Kurven als auch Flächen wer<strong>den</strong> als rationale Bézierkurven und-flächen nur als Linearkombination gegebener Punkte angegeben.Kurve (englisch „curve“): Eine Kurve wird als rationale Bézierkurve, beziehungsweiseals Zusammensetzung solcher Kurven, beschrieben. Eine rationale Bézierkurvewird wiederum durch eine Folge von Kontrollpunkten und zugehörigenGewichten angegeben. Mithilfe dieser Daten lässt sich auf einfache Weise aucheine Parameterdarstellung der Kurve ermitteln.Fläche (englisch „surface“): Eine Fläche wird, analog zum Fall der Kurve, alsZusammensetzung rationaler Bézierflächen beschrieben. Auch sie wird durchKontrollpunkte und Gewichte festgelegt, woraus sich eine Parameterdarstellungableiten lässt.Die drei beschriebenen Objekte, welche nur Forminformationen tragen, wer<strong>den</strong> imZusammenhang mit <strong>CAD</strong>-Systemen als geometrische Objekte bezeichnet. Sie bil<strong>den</strong>die Basis <strong>für</strong> die sogenannten topologischen Objekte, die auch Informationen zu ihrerBegrenzung und zu benachbarten Objekten beinhalten. In jedem <strong>CAD</strong>-System gibtes zumindest vier Arten topologischer Objekte:Ecke (englisch „vertex“): Eine Ecke ist eine Erweiterung <strong>eines</strong> Punktes, die auch<strong>den</strong> Zugang zu topologischen Informationen, wie angrenzende Kanten oderFlächen, bietet.Kante (englisch „edge“): Eine Kante ist ein Teilstück einer Kurve, das durch zweigegebene Parameterwerte begrenzt ist. Weiters verweist eine Kante auf die zweisie begrenzen<strong>den</strong> Ecken.Flächenstück (englisch „face“): Analog zur Kante ist ein Flächenstück definiertals begrenzter Teil einer Fläche. Eine Fläche ist dabei wie erwähnt als Bézierflächein Parameterdarstellung gegeben. Ebenso verweist die Fläche auf die sie4


1.3 Topologiebegrenzen<strong>den</strong> Kanten und eine zugehörige Parametrisierung in Flächenparametern.Körper (englisch „solid“): Ein Körper ist durch die Angabe der ihn begrenzen<strong>den</strong>Flächenstücke bestimmt.Weiters wer<strong>den</strong> oft Objekte unterstützt, die aus gleichartigen und zusammenhängen<strong>den</strong>Objekten bestehen. Beispiele hier<strong>für</strong> sind die Objekttypen wire und loop, dieoffene beziehungsweise geschlossene Ketten von Kanten repräsentieren, sowie shell<strong>für</strong> die Beschreibung zusammenhängender Flächenstücke.1.3 TopologieDie einfachste Möglichkeit zur Festlegung der Topologie <strong>eines</strong> Modells ist, mit jedemzu beschreiben<strong>den</strong> geometrischen Objekt jeweils dessen begrenzende Objekte zu assoziieren.Die Dimension der begrenzen<strong>den</strong> Objekte ist dabei um eins niedriger alsdie des ursprünglichen Objekts. Ein Beispiel einer solchen einfachen Festlegung ist inTabelle 1.1 gegeben. Dieses Beispiel zeigt die Topologie einer vierseitigen Pyramide,wie sie in Abbildung 1.2 angegeben ist.v5e6e5e8e7v1e4v4e3e1e2v3v2Abbildung 1.2: Pyramide mit Ecken- und KantenbezeichnungenIn dieser einfachsten Form wird die Topologie <strong>eines</strong> Körpers durch die ihn begrenzen<strong>den</strong>Flächen festgelegt, die Topologie einer Flächen durch die begrenzen<strong>den</strong> Kantenund die Topologie einer Kante durch die begrenzen<strong>den</strong> Ecken. Die gesamte Topologiedes Objekts ist durch diese drei Zuordnungen eindeutig bestimmt.Ein Nachteil dieser einfachsten Repräsentationsmöglichkeit ist, dass <strong>für</strong> einige Aufgabenauf der entsprechen<strong>den</strong> Datenstruktur nur ineffiziente Abfragealgorithmenzur Verfügung stehen. Beispielsweise ist das Auffin<strong>den</strong> aller an einer gegebenen Eckeen<strong>den</strong><strong>den</strong> Kanten nur durch Durchlaufen der gesamten Kantenliste möglich. Problemedieser Art können durch das Anlegen weiterer Zuordnungen behoben wer<strong>den</strong>.So kann etwa das Auffin<strong>den</strong> der an einer Ecke zusammentreffen<strong>den</strong> Kanten mithilfe5


1.3 TopologieTabelle 1.1: Einfache topologische Struktur zur Repräsentation einer vierseitigenPyramide: Die Topologie ist durch Körper-, Flächen- und Kantenliste eindeutigbestimmt.(a) KörperlisteKörper Flächens1 f1, f2, f3, f4, f5(b) FlächenlisteFläche Kantenf1 e1, e2, e3, e4f2 e1, e5, e6f3 e2, e6, e7f4 e3, e7, e8f5 e4, e8, e5(c) KantenlisteKante Eckene1 v1, v2e2 v2, v3e3 v3, v4e4 v4, v1e5 v1, v5e6 v2, v5e7 v3, v5e8 v4, v5einer Eckenliste gelöst wer<strong>den</strong>, in der jeder Ecke die jeweils angrenzen<strong>den</strong> Kantenzugeordnet wer<strong>den</strong>. Derartige zusätzliche Zuordnungen stellen redundante Datendar, wodurch sich der Speicherverbrauch und der Wartungsaufwand <strong>für</strong> die Datenstrukturerhöhen.1.3.1 Die Winged-Edge DatenstrukturEine weit verbreitete Erweiterung des vorgestellten minimalen Modells ist die Winged-Edge Datenstruktur. Bei dieser Datenstruktur wird vor allem die Beschreibung derKanten erweitert. Neben Referenzen auf ihren Anfangs- und Endpunkt verweisenKanten hier auch auf die bei<strong>den</strong> angrenzen<strong>den</strong> Flächen und auf jene vier Nachbarkanten,die in <strong>den</strong> angrenzen<strong>den</strong> Flächen liegen. Diese wer<strong>den</strong> als linke und rechteFläche sowie als rechter beziehungsweise linker Vorgänger beziehungsweise Nachfolgerbezeichnet.LVFläche linksLNAPKanteEPRVFläche rechtsAbbildung 1.3: Kante und referenzierte Objekte im Winged-Edge Modell.AP und EP bezeichnen Anfangs- und Endpunkt.Die bezeichneten Kanten sind der rechte beziehungsweise linke Vorgänger oderNachfolger.RN6


1.3 TopologieDabei ist zu beachten, dass referenzierte Objekte nicht notwendigerweise verschie<strong>den</strong>sind. Betrachten wir hierzu etwa das Modell <strong>eines</strong> Zylinders, bei dem der Basiskreisals eine durchgängige Kante repräsentiert ist. Bei dieser Kante stimmen AnfangsundEndpunkt überein. Weiters bezeichnen sowohl die Vorgänger- als auch die Nachfolgerkantendie ursprüngliche Kante. Es sind auch Kanten möglich, bei <strong>den</strong>en dierechte und linke Fläche übereinstimmen.Neben der erweiterten Kantenliste kommt bei dem Winged-Edge Modell eine Eckenlistehinzu, die jeder Ecke die davon ausgehen<strong>den</strong> Kanten zuordnet. Das Winged-Edge Modell <strong>für</strong> die Pyramide aus dem vorigen Beispiel ist in Tabelle 1.2 dargestellt.Tabelle 1.2: Topologische Struktur einer vierseitigen Pyramide im Winged-EdgeModell.(a) FlächenlisteFläche Kantenf1 e1, e2, e3, e4f2 e1, e5, e6f3 e2, e6, e7f4 e3, e7, e8f5 e4, e8, e5(b) KantenlisteKante Ecken Kanten Flächene1 v1, v2 e5, e4, e6, e2 f1, f2e2 v2, v3 e6, e1, e7, e3 f1, f3e3 v3, v4 e7, e2, e8, e4 f1, f4e4 v4, v1 e8, e3, e5, e1 f1, f5e5 v1, v5 e4, e1, e8, e6 f2, f3e6 v2, v5 e1, e2, e5, e7 f3, f4e7 v3, v5 e2, e3, e6, e8 f4, f5e8 v4, v5 e3, e4, e7, e5 f5, f6(c) EckenlisteEcke Kantenv1 e4, e1, e5v2 e1, e2, e6v3 e2, e3, e7v4 e3, e4, e8v5 e5, e6, e7, e81.3.2 Euler OperatorenDie Euler Operatoren stellen eine Möglichkeit dar, die Topologie von Volumsmodellenin einer Weise zu verändern, die die Gültigkeit des Modells bewahrt. Einenotwendige Bedingung <strong>für</strong> die Gültigkeit des topologischen Modells <strong>eines</strong> einfachzusammenhängen<strong>den</strong> Körpers istSatz 1 (Eulerscher Polyedersatz).v − e + f = 27


1.3 TopologieDabei bezeichnet v die Anzahl der Ecken, e die Anzahl der Kanten und f die Anzahlder Flächen des Körpers.Wir wer<strong>den</strong> hier nur <strong>den</strong> Spezialfall betrachten, dass der Kantengraph des Körpersein einfacher, planarer Graph ist, und <strong>für</strong> diesen Spezialfall eine Beweisidee geben.Die Einfachheit und Planarität des Graphen bedeuten, dass er keine Mehrfachkantenoder Schleifen enthält und sich ohne Kantenüberschneidungen in der Ebenedarstellen lässt. Insbesondere der Kantengraph <strong>eines</strong> Polyeders ist immer einfachund planar.Der einfachste planare Graph besteht nur aus einer Ecke, einer Fläche und keinenKanten. Er erfüllt also die gegebene Gleichung: 1 − 0 + 1 = 2. Wir definieren nunzwei elementare Operationen und wer<strong>den</strong> zeigen, dass der Eulersche Polyedersatzauch nach Anwen<strong>den</strong> dieser Operationen Gültigkeit behält:Operation 1: Hinzufügen einer Ecke, die über eine neue Kante mit dem bestehen<strong>den</strong>Graphen verbun<strong>den</strong> istOperation 2: Hinzufügen einer Kante, die zwei bestehende Ecken miteinander verbindet,wobei eine neue Fläche entstehtMithilfe dieser bei<strong>den</strong> Operationen kann jeder Graph aus dem erwähnten minimalenGraphen konstruiert wer<strong>den</strong>. Dabei behält die gegebene Formel ihre Gültigkeit: BeiOperation 1 wird die Anzahl der Ecken und Kanten um jeweils 1 erhöht, währenddie Anzahl der Flächen gleich bleibt. Bei Operation 2 steigt die Anzahl der Flächenund Kanten jeweils um 1 und die Anzahl der Ecken bleibt konstant. Operationendieser Art wer<strong>den</strong> als Euler Operatoren bezeichnet.Der folgende Satz stellt eine Verallgemeinerung der Formel von Euler dar, die nichtauf einfach zusammenhängende Körper beschränkt ist.Satz 2. Für je<strong>den</strong> Körper gilt:v − e + f − h = 2(b − g)Hierbei bezeichnen die Variablen v, e und f wie zuvor die Anzahl der Ecken, Kantenund Flächen. Die Variable h gibt die Anzahl der Löcher in Flächen und die Variableg die Anzahl der <strong>den</strong> Körper durchdringen<strong>den</strong> Löcher an. Mit b wird die Anzahl derinneren Hohlräume des Körpers bezeichnet.Für die Behandlung von Objekten, die der verallgemeinerten Formel von Euler genügen,ist auch eine erweiterte Menge an Operatoren notwendig, um ihre Topologiezu ändern. Laut [Str06] gibt es 99 Euler Operatoren, die die in der obigen Gleichungangegebenen Variablen um jeweils höchstens 1 verändern. Gemäß [Hav05] lässt sichdie Anzahl der benötigten Operatoren auf fünf Paare von Operatoren und zugehörigeninversen Operatoren begrenzen, um jede beliebige Änderung an der Topologievornehmen zu können.8


1.4 Béziergeometrie1.4 BéziergeometrieBézierkurven und -flächen und deren Verwandte sind mittlerweile zum Standard <strong>für</strong>die Darstellung von Objekten in <strong>CAD</strong>-Systemen gewor<strong>den</strong>. Bézierkurven wur<strong>den</strong>ursprünglich zum Modellieren von Freiformkurven entwickelt. Sie wur<strong>den</strong> erstmalsum 1960 unabhängig voneinander von Paul de Casteljau und Pierre Bézier bei <strong>den</strong>Automobilherstellern Citroën und Renault verwendet. Neben dem Einsatz in derFreiformgeometrie spielen sie heute in Form von rationalen Bézierkurven auch beider exakten Repräsentation von in <strong>CAD</strong>-Konstruktionen auftreten<strong>den</strong> Kurven, wieKegelschnitten, eine zentrale Rolle.1.4.1 Der Algorithmus von de CasteljauDer Algorithmus von de Casteljau beschreibt ein Verfahren, um eine Folge vonPunkten durch eine Bézierkurve anzunähern. Es wird sich zeigen, dass der erste undder letzte Punkt <strong>den</strong> Anfangs- und Endpunkt der Kurve bil<strong>den</strong>. Die dazwischengelegenen Punkte bestimmen die Form der Kurve, liegen aber nicht notwendigerweiseauf ihr.Definition 3 (Bézierkurve). Zu gegebenen Punkten b 0 . . . b n ist die Bézierkurveb(t) : [0, 1] → R d durch folgende rekursive Auswertungsvorschrift gegeben:b 0 i (t) = b ib r i (t) = (1 − t)b r−1i (t) + tb r−1i+1 (t)b(t) = b n 0(t)Dabei heißt n der Grad der Bézierkurve. Die Punkte b 0 , . . . b n heißen Kontrollpunkte,das durch sie festgelegte Polygon wird als Kontrollpolygon bezeichnet.Aus der Definition ist ersichtlich, dass jeder Punkt b r i die Verbindungsstrecke b r−1i b r−1i+1im Verhältnis t : (1 − t) teilt. Diese Eigenschaft kann zur Konstruktion einzelnerPunkte der Bézierkurve verwendet wer<strong>den</strong>. Man bezeichnet diese Konstruktion alsAlgorithmus von De Casteljau.Beispiel 4. Wir betrachten die ebene Bézierkurve mit <strong>den</strong> Kontrollpunkten b 0 =(0, 0), b 1 = (0, 1), b 2 = (1, 0).Damit können wir rekursiv die Darstellungen der b i j, bestimmen, die schließlich aufb führen. Beispielsweise ergibt sich b 1 0 = (1 − t) · b 0 0 + t · b 0 1 = (t, 0).Für alle b i j ermitteln wir:b 0 0 = (0, 0), b 0 1 = (1, 0), b 0 2 = (0, 1)b 1 0 = (t, 0), b 1 1 = (1 − t, t)b 2 0 = (2t − 2t 2 , t 2 ) = bDie letzte Zeile stellt hier die Parameterform der Bézierkurve dar.9


1.4 Béziergeometrieb 10b 02b 11b 20b 01b 03b 12b 21b 00b 30Abbildung 1.4: Algorithmus von de Casteljau zur Konstruktion <strong>eines</strong> Kurvenpunkteszum Parameterwert t = 2 einer Bézierkurve mit vier Kontrollpunkten31.4.2 Die Bernsteinform von BézierkurvenWährend der Algorithmus von de Casteljau eine relativ einfache Konstruktion einzelnerPunkte der Bézierkurve ermöglicht, ist die rechnerische Bestimmung mittelsRekursion recht aufwändig. Eine einfache direkte Bestimmungsmöglichkeit ist mithilfeder Bernsteinpolynome möglich, die das Beschreiben <strong>eines</strong> Kurvenpunktes alsAffinkombination der Kontrollpunkte gestatten.Definition 5 (Bernsteinpolynom). Das Bernsteinpolynom BinGrad n wird definiert durch( ) nBi n (t) = (1 − t) n−i t ii(0 ≤ i ≤ n) vomFür niedrige Grade ergibt sich beispielsweise:B0(t) 0 = 1B0(t) 1 = 1 − tB1(t) 1 = tB0(t) 2 = (1 − t) 2B1(t) 2 = 2(1 − t)tB2(t) 2 = t 2Eine wesentliche Eigenschaft der Bernsteinpolynome beschreibt der folgende Satz.Satz 6 (Zerlegung der Eins). Für die Bernsteinpolynome gilt:n∑Bi n (t) = 1i=010


1.4 Béziergeometrie11B 12B 12B 22(a)10 1(b)Abbildung 1.5: Graphen der Bernsteinpolynome vom Grad 2 beziehungsweise 5Beweis. Der Satz folgt aus dem binomischen Lehrsatz:( )n∑n∑ nBi n (t) = t i (1 − t) n−i = (t + (1 − t)) n = 1i=0i=0iDer Zusammenhang zwischen Bernsteinpolynomen und Bézierkurven wird nun durch<strong>den</strong> folgen<strong>den</strong> Satz ausgedrückt.Satz 7. Für die Parameterdarstellung der Bézierkurve b gilt:n∑b(t) = b i Bi n (t)i=0Es ist also jeder Kurvenpunkt mithilfe der Bernsteinpolynome als Affinkombinationder Basispunkte darstellbar.Beweis. Für <strong>den</strong> Beweis zeigen wir durch vollständige Induktion die Gültigkeit derallgemeineren Formel b r i (t) = ∑ rj=0 b i+j B r j (t). Für r = n und i = 0 ergibt sich darausdie obige Formel.Für r = 0 ist die Formel gültig:0∑b i+j Bj 0 (t) = b i B0(t) 0 = b i = b 0 ij=011


1.4 BéziergeometrieDer Schritt von r − 1 auf r geschieht folgendermaßen:b r i (t) =(1 − t)b r−1ir−1 ∑=(1 − t)j=0(t) + tb r−1b i+j B r−1ji+1 (t)r−1 ∑(t) + tj=0b i+1+j Bjr−1 (t)( )( )r−1 ∑ r − 1r−1=(1 − t) b i+j t j (1 − t) r−1−j ∑ r − 1+ t b i+1+j t j (1 − t) r−1−jj=0jj=0j( )( )r−1 ∑ r − 1r−1= b i+j t j (1 − t) r−j ∑ r − 1+ b i+1+j t j+1 (1 − t) r−1−jj=0jj=0j( )( )r∑ r − 1r∑ r − 1= b i+j t j (1 − t) r−j + b i+j t j (1 − t) r−1−(j−1)j=0jj=1j − 1( )( )r∑ r − 1r∑ r − 1= b i+j t j (1 − t) r−j + b i+j t j (1 − t) r−jj=0jj=0j − 1(( ) ( ))r∑r − 1 r − 1= b i+j t j (1 − t) r−j +j=0j j − 1( )r∑r= b i+j t j (1 − t) r−jj=0jr∑= b i+j Bj r (t)j=0Beispiel 8. Wir bestimmen die Bernsteinform der Bézierkurve aus Beispiel 4 mittelsdes obigen Satzes. Die Kontrollpunkte lauten: b 0 = (0, 0), b 1 = (0, 1), b 2 = (1, 0).Damit ist die Bernsteinformn∑b(t) = b i Bi n (t)i=0= (0, 0) B0(t) 2 + (0, 1) B1(t) 2 + (1, 0) B2(t)2= (1 − t 2 ) (0, 0) + 2(1 − t)t (0, 1) + t 2 (1, 0)1.4.3 Ableitung von BézierkurvenSatz 9. Die Ableitung einer Bézierkurve vom Grad n ist eine Bézierkurve vom Gradn − 1. Es gilt:n−1 ∑ḃ(t) = n (b i+1 − b i )Bjn−1 (t)i=012


1.4 BéziergeometrieBeweis. Der Ableitungsvektor einer Bézierkurve ist eine Linearkombination der Kontrollpunkte:ḃ(t) = d n∑n∑b i B n di (t) = b idti=0i=0dt Bn i (t)Die Ableitungen der Bernsteinpolynome sind dabei:ddt Bn i (t) =dt( d ) n(1 − t) n−i t iin!=i!(n − i)! (1 − t)n−i i t i−1 n!−i!(n − i)! (n − i)(1 − t)n−i−1 t i(n − 1)!= n(i − 1)!(n − i)! (1 − t)n−i t i−1 (n − 1)!− ni!(n − i − 1)! (1 − t)n−i−1 t i( )( )n − 1n − 1= n (1 − t) (n−1)−(i−1) t i−1 − n (1 − t) n−1−i t ii − 1i= n ( Bi−1 n−1 (t) − Bi n−1 (t) )Damit gilt <strong>für</strong> <strong>den</strong> Ableitungsvektor:ḃ(t) = nWegen B n−1−1n∑i=0b i(Bn−1i−1 (t) − B n−1i (t) )= 0 und B n−1n(∑ n n−1ḃ(t) = n b i Bi−1 n−1 ∑(t) −i=1i=0(∑ n n−1= n b i+1 Bin−1 ∑(t) −i=0i=0n−1 ∑= n (b i+1 − b i )Bin−1 (t)i=0= 0 lässt sich dies umformen zu:b i Bin−1 (t))b i Bin−1 (t))Die Ableitung einer Bézierkurve ist also eine Bézierkurve mit <strong>den</strong> Kontrollpunkten¯b i = b i+1 − b i . Diese Kurve wird als Hodograph bezeichnet.1.4.4 Formeigenschaften von BézierkurvenAus <strong>den</strong> bisherigen Resultaten können wir die folgen<strong>den</strong> Eigenschaften von Bézierkurvenherleiten:13


1.4 BéziergeometrieEndpunkt-Interpolation: Die Endpunkte einer Bézierkurve fallen mit <strong>den</strong> Endpunktendes Kontrollpolygons zusammen. Weiters liegen das erste und letzteSegment des Kontrollpolygons jeweils tangential zu der Kurve. Die erste Aussagefolgt unmittelbar aus dem Algorithmus von de Casteljau, die zweite ausSatz 9.Konvexe-Hüllen-Eigenschaft: Diese Eigenschaft besagt, dass jeder Punkt einer Bézierkurvein der konvexen Hülle s<strong>eines</strong> Kontrollpolygons liegt. Sie kann dadurchbegründet wer<strong>den</strong>, dass bei dem Algorithmus von de Casteljau wiederholt Zwischenpunkteaus bereits existieren<strong>den</strong> Punkten konstruiert wer<strong>den</strong>, die damitwieder in der konvexen Hülle liegen müssen.Affine Invarianz: Die Kurve ist mit ihren Kontrollpunkten auf affin invariante Weiseverbun<strong>den</strong>. Dies gilt, weil jeder Kurvenpunkt zu gegebenem Parameter gemäßSatz 7 als Affinkombination der Kontrollpunkte darstellbar ist und affineAbbildungen Affinkombinationen unverändert lassen. Die affine Invarianz bedeutetinsbesondere, dass im Zusammenhang mit <strong>CAD</strong>-Systemen häufig auftretendeAbbildungen, wie Translation, Drehung oder Parallelprojektion dieZusammengehörigkeit von Kurve und Kontrollpolygon aufrechterhalten. Umeine Kurve also einer affinen Transformation zu unterwerfen, genügt es, ihreKontrollpunkte entsprechend zu transformieren. Für andere Transformationen,wie etwa eine Zentralprojektion, gilt dies allerdings nicht.1.4.5 Rationale BézierkurvenRationale Bézierkurven stellen eine Verallgemeinerung der schon betrachteten Bézierkurvendar, mit Hilfe derer sich nicht nur Polynomkurven darstellen lassen, sondernbeispielsweise auch Kegelschnitte. Durch diese Möglichkeit haben sich rationale Bézierkurvenzur Standarddarstellungsform im Bereich des <strong>CAD</strong> entwickelt.In Satz 7 haben wir Bézierkurven in der Form b(t) = ∑ ni=0 b i B n i (t) dargestellt. Dabeistellten die b i Kontrollpunkte dar, die die Form der Bézierkurve bestimmten. Beirationalen Bézierkurven erhält nun in der angegebenen Formel jeder Kontrollpunktb i einen zusätzlichen Koeffizienten w i , das sogenannte Gewicht des Kontrollpunktes.Dieses Gewicht bestimmt <strong>den</strong> Einfluss des Kontrollpunktes auf die Kurvenform:Bei einem großen Gewicht ist der Einfluss des Punktes groß und die Kurve nähertsich stark an <strong>den</strong> Punkt an, bei einem kleinen Gewicht ist es umgekehrt. Damitdie Definition wie bei <strong>den</strong> Bézierkurven bewegungsinvariant bleibt, wird die mitGewichten versehene Darstellung normiert, um wieder eine Affinkombination zuerhalten.Definition 10 (Rationale Bézierkurve). Seien (b i , w i ) Paare von Punkten und Gewichten.Die dadurch festgelegte rationale Bézierkurve b(t) ist über dem Intervall[0, 1] auf folgende Weise definiert:n∑ w i B n ∑i (t)ni=0b(t) = b i ∑ nj=0w j Bj n (t) = b i w i Bi n (t)∑ ni=0w i Bi n (t)i=014


1.4 BéziergeometrieWir definieren weiters die rationalen Basisfunktionen R n i (t) =folgende Schreibweise ermöglicht:n∑b(t) = b i Ri n (t)i=0∑ w iBi n(t)nj=0 w jBj n (t),was dieFür rationale Bézierkurven gelten neben der affinen Invarianz auch viele der anderenEigenschaften von Bézierkurven, wie etwa die Endpunkt-Interpolation und beidurchwegs nichtnegativen Gewichten die Konvexe-Hüllen-Eigenschaft.1.4.6 Kegelschnitte als rationale BézierkurvenDer Hauptgrund <strong>für</strong> <strong>den</strong> Einsatz von rationalen Bézierkurven ist, dass mithilfe vonihnen eine größere Anzahl an Kurven exakt dargestellt wer<strong>den</strong> kann. Mit rationalenBézierkurven vom Grad 2 können beispielsweise Kegelschnitte repräsentiert wer<strong>den</strong>.Satz 11. Jede rationale Bézierkurve vom Grad 2 ist ein Kegelschnitt.Beweis. Eine rationale Bézierkurve vom Grad 2 wird durch drei Kontrollpunkte festgelegt.Nachdem alle Kurvenpunkte in der konvexen Hülle der drei Kontrollpunkteliegen, handelt es sich um eine ebene Kurve. Durch Anpassung des Koordinatensystemskann erreicht wer<strong>den</strong>, dass die Kurve in der Ebene z = 0 liegt, womit inweiterer Folge die z-Koordinate vernachlässigt wer<strong>den</strong> kann.Die Kontrollpunkte b 0 , b 1 , b 2 seien gegeben durch b i = (x bi , y bi ). Die dadurch festgelegterationale Bézierkurve vom Grad 2 hat die Parameterdarstellungb(t) =(∑ 2i=0x bi w i Bi 2 ∑(t) 2i=0∑ 2j=0w j Bj 2 (t) , y bi w i Bi 2 )(t)∑ 2j=0w j Bj 2 (t)In homogenen Koordinaten lautet diese:b(t) =( 2∑w i Bi 2 (t) :i=02∑x bi w i Bi 2 (t) :i=0)2∑y bi w i Bi 2 (t)i=0Die homogenisierte Parameterdarstellung einer Bézierkurve beschreibt somit eineBézierkurve vom Grad 2 im Raum, also eine Parabel. Beim Übergang von homogenenzu kartesischen Koordinaten wer<strong>den</strong> die Koordinaten durch die erste homogeneKoordinate dividiert, was einer Zentralprojektion in die Ebene x 0 = 1 entspricht.Als perspektives Bild einer Parabel ist die erhaltene Kurve ein Kegelschnitt.Ist eine rationale Bézierkurve so gegeben, dass das erste und das letzte Gewichtgleich 1 sind, so bezeichnet man dies als Standardform der Kurve. Ohne Beweissei angegeben, dass sich jede rationale Bézierkurve in einer solchen Form darstellen15


1.4 Béziergeometrielässt. Die Basisfunktionen der rationalen Bézierkurven vom Grad 2 in Standardformlauten:R 2 0(t) =R 2 1(t) =R 2 2(t) =w 0 B 2 0(t)∑ nj=0w j B n j (t) = (1 − t) 2(1 − t) 2 + w 1 · 2(1 − t)t + t 2w 1 · B 2 1(t)∑ nj=0w j B n j (t) =w 1 · 2(1 − t)t(1 − t) 2 + w 1 · 2(1 − t)t + t 2w 2 B 2 2(t)∑ nj=0w j B n j (t) = t 2(1 − t) 2 + w 1 · 2(1 − t)t + t 2Wir haben in der Definition rationaler Bézierkurven <strong>den</strong> Definitionsbereich auf dasIntervall [0, 1] eingeschränkt und damit nur Teilbögen von Kegelschnitten erhalten.Betrachtet man statt dieses Intervalls ganz R als Definitionsmenge, so können bei<strong>den</strong> Basisfunktionen im Nenner bis zu zwei Nullstellen auftreten. Jede Nullstelleentspricht dabei einem Fernpunkt √ des Kegelschnitts. Die Nullstellen gehören zu <strong>den</strong>Parameterwerten t 1,2 = w 1−1± w1 2−12w 1. Bei w−21 > 1 gibt es damit zwei Fernpunkte, derKegelschnitt ist eine Hyperbel, bei w 1 = 1 handelt es sich um einen Kegelschnittmit einem Fernpunkt, also eine Parabel und bei w 1 < 1 ist die Kurve eine Ellipse.w 1 =3w 1 =1w 1 =0.3Abbildung 1.6: Hyperbel-, Parabel- und Ellipsenbögen als rationale Bézierkurvenvom Grad 2111R 02R 12R 22R 12R 12R 22R 02R 22R 12(a) w 1 = 31(b) w 1 = 11(c) w 1 = 0.31Abbildung 1.7: Basisfunktionen rationaler Bézierkurven vom Grad 2 mit unterschiedlichenMittelgewichten w 116


1.4 BéziergeometrieAls Sonderfall einer Ellipse ist oft die Darstellung <strong>eines</strong> Kreises gefragt. Ein Kreistritt auf, wenn das Kontrollpolygon zwei gleich lange Schenkel hat, die miteinander<strong>den</strong> Winkel α einschließen und <strong>für</strong> das Gewicht w 1 = sin α gewählt wird.[Far94, S.2186]Abbildung 1.8: Viertelkreis als rationale Bézierkurve mit GewichtenBeispiel 12. Ein Viertelkreis kann als rationale Bézierkurve mit <strong>den</strong> Kontrollpunkten(0, 1), (1, 1), (1, 0) und Gewichten w 0 = w 2 = 1 und w 1 = sin( π) = √ 1dargestelltwer<strong>den</strong>. Aus der allgemeinen Parameterdarstellung b(t) = R0(t)·(0, 2 1)+R1(t)·24 2(1, 1) + R2(t) 2 · (1, 0) erhält man die Darstellungb(t) =( √ √ )2(t − 1)t − t2 2(t − 1)t − (t − 1)2√2(t − 1)t − (t − 1)2 − t , √ 2 2(t − 1)t − (t − 1)2 − t 2<strong>für</strong> <strong>den</strong> beschriebenen Kreisbogen.Auch mit rationalen Bézierkurven können nicht alle in <strong>CAD</strong>-Systemen auftreten<strong>den</strong>Kurven dargestellt wer<strong>den</strong>. Nicht exakt darstellbare Kurven wer<strong>den</strong> in <strong>CAD</strong>-Systemen üblicherweise durch Splinekurven angenähert. Ein Beispiel <strong>für</strong> eine solcheKurve ist etwa eine Schraublinie.Satz 13. Eine Schraublinie kann nicht in Form einer rationalen Bézierkurve repräsentiertwer<strong>den</strong>.Beweis. Jede Parallelprojektion einer rationalen Bézierkurve ist als affines Bild wiedereine rationale Bézierkurve. Sie kann damit als parametrische Kurve dargestelltewer<strong>den</strong>, deren Koordinatenfunktionen rationale Funktionen sind. Die Normalprojektioneiner Schraublinie in eine achsenparallele Ebene ergibt hingegen mit einerSinuskurve eine Kurve, bei der dies nicht möglich ist. Daher handelt es sich wederbei dem Bild der Schraublinie noch bei der Schraublinie selbst um eine rationaleBézierkurve.17


1.4 Béziergeometrie1.4.7 Zusammengesetzte KurvenWie wir im letzten Abschnitt gesehen haben, ist mithilfe von rationalen Bézierkurvenbeispielsweise die Darstellung <strong>eines</strong> Viertelkreises auf einfache Weise möglich. Umnun einen ganzen Kreis zu erhalten, wer<strong>den</strong> in <strong>CAD</strong>-Systemen üblicherweise mehreresolcher Kurvenstücke aneinandergefügt. Auch bei der Freiformgeometrie spielenzusammengesetzte Kurven eine wesentliche Rolle - hier wer<strong>den</strong> sie als Splinekurvenbezeichnet.Bisher haben wir bei <strong>den</strong> Bézierkurven und rationalen Bézierkurven immer Kurvenbehandelt, die im Parameterbereich [0, 1] definiert waren. Wenn wir nun Teilkurvenvon zusammengesetzten Kurven betrachten, so wer<strong>den</strong> diese über allgemeinerenParameterbereichen definiert sein. Eine aus k verschie<strong>den</strong>en Teilkurven zusammengesetzteKurve wird dabei stückweise auf Parameterintervallen definiert, die durchdie Werte u 0 , . . . u k begrenzt sind. Die Werte u i wer<strong>den</strong> dabei auch als Knoten bezeichnet.In jedem Intervall [u i , u i+1 ] ist es nun möglich, über eine lineare Parametertransformationeinen lokalen Parameter zu definieren, der wieder im Intervall [0, 1]läuft. Diesen lokalen Parameter wollen wir wieder mit t bezeichnen. Er ist definiertals t =u−u iu i+1 −u i.Beispiel 14. Wir wer<strong>den</strong> die in Abbildung 1.9 gezeigte zusammengesetzte Kurvemittels <strong>eines</strong> einzigen Parameters u darstellen. Dabei soll die zusammengesetzteKurve annähernd nach Bogenlänge parametrisiert wer<strong>den</strong>. Das ist nicht unbedingtnotwendig, bietet aber bei der weiteren praktischen Behandlung einige Vorteile.Basierend auf dem Ergebnis von Beispiel 12 erhalten wir folgende Parameterdarstellung:⎧⎨(−u, 1) <strong>für</strong> 0 ≤ u < 2c(u) = ( √ √ )⎩ 2(t−1)t−t 2√2(t−1)t−(t−1), 2(t−1)t−(t−1) 2√ 2 −t 2 2(t−1)t−(t−1) 2 −t mit t =u−22 π <strong>für</strong> 2 ≤ u < 2 + π 22Abbildung 1.9: zusammengesetzte Kurve1.4.8 Rationale BézierflächenDie Definition der rationalen Bézierflächen geschieht ähnlich wie die der rationalenBézierkurven. Analog zum Fall der Kurven wird hier jeder Flächenpunkt als Affinkombinationder Konrollpunkte b i,j angegeben. Alle Kontrollpunkte zusammenbezeichnet man als Kontrollnetz der Fläche.18


1.4 BéziergeometrieDefinition 15. Seien b i,j <strong>für</strong> 0 ≤ i ≤ m und 0 ≤ j ≤ n vorgegebene Kontrollpunkte.Die dadurch festgelegte rationale Bézierfläche hat die Parameterdarstellungm∑ n∑p(u, v) = b i,j Ri m (u)Rj n (v)i=0 j=0Dabei bezeichnen die Funktionen R k i die von <strong>den</strong> rationalen Bézierkurven bekanntenBasisfunktionen. Wie bei diesen laufen auch hier die Variablen u und v im Intervall[0, 1]. Das Paar (n, m) wird als Grad der Fläche bezeichnet.Abbildung 1.10: Bézierfläche vom Grad (2, 3) mit KontrollnetzAufgrund der ähnlichen Definition haben rationale Bézierflächen auch einige der <strong>für</strong>Bézierkurven gezeigten Eigenschaften, wie die affine Invarianz und bei durchwegspositiven Gewichten die Konvexe-Hüllen-Eigenschaft. Weiters interpolieren sie dievier äußersten Kontrollpunkte. Außerdem gilt, dass die Parameterkurven, und damitinsbesondere auch die Randkurven, wiederum rationale Bézierkurven sind.19


2 Geometrische Konstruktionen undAlgorithmenIn diesem Kapitel wer<strong>den</strong> wir aufbauend auf <strong>den</strong> bereits behandelten Grundlagennun Konstruktionen und Algorithmen behandeln, welche auf der Béziergeometrieund Boundary Representation basieren.2.1 FreiformkurvenDie Benutzung von Freiformgeometrie wird im Bereich des <strong>CAD</strong> generell in zweiBereichen eingesetzt. Einerseits dienen sie zum Entwerfen von Kurven, die vom Benutzernur durch Angabe von Kontrollpunkten festgelegt wer<strong>den</strong>. Zum anderen wer<strong>den</strong>sie eingesetzt, um gewisse Kurven anzunähern, bei <strong>den</strong>en die exakte Darstellungnicht beziehungsweise nur mit hohem Aufwand möglich wäre.Bei allen in <strong>CAD</strong>-Systemen verwendeten Freiformkurven handelt es sich um ausrationalen Bézierkurven zusammengesetzte Kurven. Die Kurven wer<strong>den</strong> allerdingsnicht über die bekannten Bézier-Kontrollpolygone festgelegt, sondern entweder überdie ähnlich gearteten B-Spline-Kontrollpolygone oder über zu interpolierende Punkte.Bei der Interpolation ist eine Folge von Punkten gegeben, durch die eine Freiformkurvegelegt wer<strong>den</strong> soll. Zusätzlich zu <strong>den</strong> Punkten können auch Parameterwerteund Ableitungsvektoren vorgegeben sein. Wir wer<strong>den</strong> hier zwei häufig genutzte Interpolationsverfahrenvorstellen.2.1.1 Kubische HermiteinterpolationBei der kubischen Hermiteinterpolation wird zu gegebenen Paaren von Punkten undAbleitungsvektoren eine Splinekurve ermittelt. Diese besteht aus kubischen Béziersegmenten,die jeweils zwischen zwei aufeinanderfolgen<strong>den</strong> Punkten definiert sind.Für die Hermiteinterpolation genügt es also, zu zwei Paaren von gegebenen Punktenund Ableitungsvektoren ein interpolierendes Béziersegment zu fin<strong>den</strong>.Satz 16. Seien (p 0 , v 0 ) und (p 1 , v 1 ) Paare von zu interpolieren<strong>den</strong> Punkten undAbleitungsvektoren. Dann gibt es genau eine zu diesen Interpolationsdaten passendekubische Bézierkurve. Sie hat die Kontrollpunkte b 0 = p 0 , b 1 = p 0 + 1 3 v 0, b 2 = p 1 − 1 3 v 1,b 3 = p 1 .20


2.1 Freiformkurvenp 0p 1v 1v 0Abbildung 2.1: Hermitsche Interpolationskurve mit Kontrollpolygon zu vorgegebenenInterpolationsdatendefi-Beweis. Die Parameterdarstellung der durch die Kontrollpunkte b 0 , b 1 , b 2 , b 3nierten Bézierkurve und ihrer Ableitung lautenb(t) = B 3 0(t)b 0 + B 3 1(t)b 1 + B 3 2(t)b 2 + B 3 3(t)b 3= (1 − t) 3 b 0 + 3(1 − t) 2 t b 1 + 3(1 − t)t 2 b 2 + t 3 b 3ḃ(t) = −3(1 − t) 2 b 0 + 3(t − 1)(3t − 1) b 1 − 3t(3t − 2) b 2 + 3t 2 b 3Damit folgt b(0) = p 0 , b(1) = p 1 sowie ḃ(0) = 3 (b 1 − b 0 ) = v 0 , ḃ(1) = 3 (b 3 − b 2 ) =v 1Die Hermiteinterpolation resultiert in einer Kurve, die aus Béziersegmenten zusammengesetztist, wobei die Ableitung an <strong>den</strong> Übergangspunkten <strong>für</strong> beide angrenzen<strong>den</strong>Kurventeile übereinstimmt. Die resultierende Kurve besitzt also zumindest dieGlattheitsklasse C 1 und ist somit tangentenstetig. Kurven dieser Art fin<strong>den</strong> nebendem Einsatz im <strong>CAD</strong>-Bereich auch in Vektorgrafikprogrammen Verwendung.2.1.2 Kubische C 2 -Spline-InterpolationBei der kubischen C 2 -Spline-Interpolation wird zu einer gegebenen Punktfolge eineinterpolierende Splinekurve der Glattheitsklasse C 2 ermittelt. Sie ist damit aus kubischenBéziersegmenten mit krümmungsstetigem Übergang zusammengesetzt. Diegegebenen Bedingungen führen auf ein lineares Gleichungssystem mit zwei Freiheitsgra<strong>den</strong>.Um eine eindeutige Lösung zu erhalten, wer<strong>den</strong> üblicherweise zusätzlicheBedingungen aufgestellt. Diese können etwa die Angabe von Ableitungsvektoren imAnfangs- und Endpunkt oder das Verschwin<strong>den</strong> der zweiten Ableitung in diesenPunkten darstellen.21


2.1 Freiformkurven2.1.3 B-Spline-KurvenIn Form der rationalen Bézierkurven haben wir bereits Verallgemeinerungen derBézierkurven betrachtet, die durch die Modifikation der Basisfunktionen entstehen.Eine andere Variation der Bézierkurven stellen die B-Spline-Kurven dar. Diese bestehenaus einzelnen Béziersegmenten, welche üblicherweise tangential aneinanderschließen.Ein wesentlicher Unterschied zu Bézierkurven besteht in der sogenanntenlokalen Kontrolle: Im Gegensatz zu Bézierkurven hat bei B-Spline-Kurven jederKontrollpunkt nur auf einen eingeschränkten Bereich der Kurve Einfluss. Beim Verschieben<strong>eines</strong> Kontrollpunktes ändert sich damit die Kurve nur in einer vom Gradabhängigen Umgebung dieses Punktes.2.1.3.1 DefinitionIn Satz 7 haben wir eine Bézierkurve dargestellt als b(t) = ∑ ni=0 b i Bi n (t). Diese Darstellungist bewegungsinvariant, da die Linearkombination wegen ∑ ni=0 Bi n (t) = 1eine Affinkombination ist. Es wäre auch möglich, die Bernsteinpolynome Bin durchandere Polynome zu ersetzen, die ebenfalls diese Eigenschaft besitzen. Dies geschiehtbei <strong>den</strong> B-Spline-Kurven: Die Bersteinpolynome wer<strong>den</strong> hier durch die B-Spline-Basisfunktionen ersetzt. Diese sind durch eine Folge von Parameterwerten und ihrenGrad eindeutig festgelegt.Definition 17 (B-Spline-Basisfunktionen). Sei (t i ) i∈Z eine monotone Folge reellerZahlen. Diese Folge wird als Knotenvektor bezeichnet, die Zahlen selbst als Knoten.Dann sind die B-Spline-Basisfunktionen Ni n (t) vom Grad n folgendermaßen rekursivdefiniert:⎧⎨Ni 0 1 falls t i ≤ t < t i+1(t) =⎩ 0 sonstNi n (t) =t − t iNi n−1 (t) + t i+n+1 − tNi+1 n−1 (t)t i+n − t i t i+n+1 − t i+1Die Verwendung der B-Spline-Basisfunktionen in Analogie zu <strong>den</strong> Bernsteinpolynomenist nur sinnvoll, wenn diese ebenfalls eine Zerlegung der Eins bil<strong>den</strong>, da nurdann die Kurve affin invariant mit <strong>den</strong> Kontrollpunkten in Zusammenhang steht.Satz 18 (Zerlegung der Eins). Für die B-Spline-Basisfunktionen vom Grad n gilt∑i∈Z N n i (t) = 1.Beweis. Für n = 0 folgt aus der Definition unmittelbar ∑ i∈Z N 0 i (t) = 1. Für n ≥ 122


2.1 Freiformkurvenzeigen wir die Behauptung durch vollständige Induktion:∑Ni n (t) = ∑ ( t − tiNi n−1 (t) + t i+n+1 − tN n−1i∈Z i∈Zt i+n − t i t i+n+1 − t i+1= ∑ ( t − tiNin−1 (t) + t )i+n − tNin−1 (t)i∈Zt i+n − t i t i+n − t i= ∑ ( )ti+n − t iNi+1 n−1 (t)i∈Zt i+n − t i= ∑ i∈ZNin−1 (t)i+1 (t))Da die Zerlegung der Eins gezeigt ist, lassen sich B-Spline-Kurven definieren:Definition 19 (B-Spline-Kurve). Es sei eine Folge von Kontrollpunkten b i un<strong>den</strong>tsprechen<strong>den</strong> Parameterwerten t i gegeben. Nin bezeichne die zu <strong>den</strong> Parameterwertengehörende Basisfunktion vom Grad n. Dann ist die zugehörige B-Spline-Kurve vom Grad n durch die folgende Parameterdarstellung definiert:n∑b(t) = b i Ni n (t)i=02.1.3.2 Eigenschaften der Basisfunktionen und B-Spline-KurvenEine wesentliche Eigenschaft der B-Spline-Kurven ist wie schon erwähnt die lokaleKontrolle. Diese wird durch <strong>den</strong> folgen<strong>den</strong> Satz beschrieben.Satz 20. Die Funktion Ninnull.ist außerhalb des Intervalls [t i , t i+n+1 ) konstant gleichBeweis. Für n = 0 folgt der Satz unmittelbar aus der Definition. Nun sei bereitsbekannt, dass alle B-Spline-Basisfunktionen Nik−1 <strong>für</strong> k − 1 ∈ N ∗ außerhalb desgegebenen Intervalls konstant gleich null sind. Nach Definition 17 hat Ni k (t) dieForm Ni k (t) = α(t)Nik−1 (t) + β(t)Ni+1 k−1 (t). Nachdem Nik−1 und Ni+1 k−1 jeweils nur in<strong>den</strong> Intervallen [t i , t i+k ) und [t i+1 , t i+k+1 ) von 0 verschie<strong>den</strong> sind, kann Nik nur imIntervall [t i , t i+k+1 ) von 0 verschie<strong>den</strong> sein.Der Kontrollpunkt b i beeinflusst die Kurve damit nur im angegebenen Intervall.Umgekehrt haben auf einen Kurvenpunkt zum Parameter t mit t i ≤ t < t i+1 nurdie Kontrollpunkte b i−n , . . . , b i Einfluss. Da die Basisfunktionen Nin an jeder Stellenichtnegativ sind, ist jeder Kurvenpunkt zum Parameter t als Konvexkombinationder eben angegebenen Kontrollpunkte darstellbar und liegt damit in deren konvexerHülle.23


2.1 Freiformkurven2.1.3.3 SonderformenEs gibt verschie<strong>den</strong>e Sonderformen von B-Spline-Kurven, welche durch spezielleKnotenvektoren entstehen und besondere Relevanz <strong>für</strong> die Praxis haben.Bil<strong>den</strong> die Knotenvektoren eine arithmetische Folge der Form (0, 1 , . . . , n−1 , 1), son nentsteht eine sogenannte uniforme B-Spline-Kurve. Im Unterschied zu Bézierkurvenund anderen Formen der B-Spline-Kurven besitzen uniforme B-Spline-Kurven nichtdie Eigenschaft der Endpunkt-Interpolation. In Abbildung 2.2 ist eine quadratischeB-Spline-Kurve zu sehen, bei welcher die Endpunkte in <strong>den</strong> Mittelpunkten des erstenbeziehungsweise letzten Segments des Kontrollpolygons liegen.1(a)0 0.25 0.5 0.75 1(b)Abbildung 2.2: Uniforme quadratische B-Spline-Kurve mit Kontrollpolygon sowieBasisfunktionen zum Knotenvektor (0, 0.25, 0.5, 0.75, 1)1(a)0 0.25 0.5 0.75 1(b)Abbildung 2.3: Quadratische B-Spline-Kurve mit Kontrollpolygon sowie Basisfunktionenzum Knotenvektor (0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1)Eine Interpolation von Kontrollpunkten kann bei einer B-Spline-Kurve vom Grad nerreicht wer<strong>den</strong>, wenn zumindest n Knoten des Knotenvektors zusammenfallen. Im24


2.2 Besondere Flächenklassen1(a)0 0.2 0.8 1(b)Abbildung 2.4: Kubische B-Spline-Kurve und Basisfunktionen zum Knotenvektor(0, 0, 0, 0, 0.2, 0.8, 1, 1, 1, 1)Bereich des <strong>CAD</strong> wer<strong>den</strong> häufig B-Spline-Kurven verwendet, die einen Knotenvektorder Form (0, . . . , 0, t} {{ } 0 , . . . , t r , 1, . . . , 1) besitzen und damit durch die Endpunkte ihres} {{ }n+1n+1Kontrollpolygons verlaufen.2.2 Besondere FlächenklassenIn diesem Abschnitt wer<strong>den</strong> wir Möglichkeiten zur Modellierung besonderer Flächenklassenmithilfe rationaler Bézierflächen beschreiben. Insbesondere wer<strong>den</strong> wirRotationsflächen und Regelflächen behandeln, welche zwei grundlegende Typen vonFlächen im Bereich des <strong>CAD</strong> darstellen. Sie sind im Bezug auf das zu entwickelnde<strong>CAD</strong>-System von besonderer Relevanz, da sämtliche darin verwendeten Flächenentweder Rotationsflächen sein wer<strong>den</strong>, oder als Extrusionsflächen Sonderfälle vonRegelflächen.Wie in Unterabschnitt 1.4.8 erwähnt, handelt es sich bei <strong>den</strong> Parameterkurven rationalerBézierflächen immer um rationale Bézierkurven. Diese Parameterkurven spielennun bei der Konstruktion von Dreh- und Regelflächen eine wesentliche Rolle.Derartige Flächen tragen jeweils eine Schar von Kreisen beziehungsweise Gera<strong>den</strong>,welche mithilfe rationaler Bézierkurven als Parameterkurven der Flächen dargestelltwer<strong>den</strong> können.2.2.1 RegelflächenEs sei p(u, v) die Parameterdarstellung einer rationalen Bézierfläche vom Grad (1, n).Die Parameterkurven zum ersten Parameter sind rationale Bézierkurven vom Grad1, und damit Strecken. Es handelt sich also um eine Regelfläche. Die Randkurven25


2.2 Besondere Flächenklassenzu <strong>den</strong> Parameterwerten v = 0 und v = 1 sind rationale Bézierkurven vom Grad nund können als Leitkurven der Regelfläche angesehen wer<strong>den</strong>.Abbildung 2.5: Regelfläche als Bézierfläche vom Grad (1,2)Durch eine spezielle Wahl der Leitkurven können besondere Regelflächen erstelltwer<strong>den</strong>. Handelt es sich etwa bei <strong>den</strong> Leitkurven um Strecken, so entsteht ein hyperbolischesParaboloid. Sind die Leitkurven schiebungsgleich, so entsteht eine Zylinderfläche.Abbildung 2.6: Eine Bézierfläche vom Grad (1,1) ist eine HP-Fläche2.2.2 RotationsflächenDrehflächen können als rationale Bézierflächen modelliert wer<strong>den</strong>, indem eine Scharvon Parameterkurven als koaxiale Kreise ausgeführt wird. In Beispiel 12 haben wir26


2.2 Besondere Flächenklassenbereits gezeigt, wie ein Viertelkreis durch eine rationale Bézierkurve mit <strong>den</strong> Gewichten1, √ 1, 1 dargestellt wer<strong>den</strong> kann. Ein ganzer Kreis kann mithilfe einer2sogenannten NURBS-Kurve erzeugt wer<strong>den</strong>, welche eine Verallgemeinerung sowohlvon rationalen Bézierkurven als auch von B-Spline-Kurven darstellt. Wir wer<strong>den</strong> uns1111Abbildung 2.7: Kreis als NURBS-Kurve mit Kontrollpolygon und Gewichtenhier auf die bekannte Darstellung von Viertelkreisen beschränken, wodurch immernur Teile von Drehflächen entstehen. Es sei angemerkt, dass mittels NURBS-Kurvenund -Flächen immer auch vollständige Rotationsflächen erzeugt wer<strong>den</strong> können.Eine Rotationsfläche mit einer Bézierkurve als Profilkurve kann wie in Abbildung 2.8gezeigt erstellt wer<strong>den</strong>. Die in waagerechten Ebenen liegen<strong>den</strong> Teile des Polygonnetzeshaben jeweils die gleiche Form wie die Kontrollpolygone des bekannten Modells<strong>eines</strong> Viertelkreises. Sie bil<strong>den</strong> also einen rechten Winkel, dessen Scheitel ein Gewichtvon √ 12 besitzt.Abbildung 2.8: Teil einer Drehfläche als rationale Bézierfläche. Die ausgefülltenKontrollpunkte haben ein Gewicht von 1, die verbleiben<strong>den</strong> <strong>eines</strong> von √ 12 .Um nun Rotationsflächen mit rationalen Bézierkurven als Profilkurven darstellenzu können, müssen die Gewichte, die bisher nur die Werte 1 und √ 1hatten, mit227


2.3 Schnitte<strong>den</strong> entsprechen<strong>den</strong> Gewichten der Profilkurven multipliziert wer<strong>den</strong>. Für <strong>den</strong> inAbbildung 2.9 dargestellten Kugelteil ergeben sich <strong>für</strong> <strong>den</strong> mittleren Teil des Kontrollnetzesdamit die Werte 1 · √ 1, √ 1 · √ 1= 1 und 1 · √ 1. Eine Besonderheit2 2 2 2 2an diesem Beispiel ist, dass drei der Kontrollpunkte zusammenfallen, was an derentsprechen<strong>den</strong> Stelle zu einer Singularität in der Parametrisierung führt.1 //111Abbildung 2.9: Teil einer Kugel als rationale Bézierfläche mit Gewichten2.3 SchnitteIn diesem Abschnitt wer<strong>den</strong> wir uns mit der Bestimmung von Schnitten zwischenKanten und Flächenstücken befassen. Diese sind insbesondere in Bezug auf die imnächsten Abschnitt behandelten booleschen Operationen von Bedeutung.2.3.1 SchnittpunkteEinzelne Schnittpunkte treten auf, wenn eine Kante mit einer anderen Kante odermit einem anderen Flächenstück geschnitten wird.Seien c 1 (t) und c 2 (u) Parameterdarstellungen von Kanten. Schnittpunkte dieserKanten treten an Nullstellen der Abstandsfunktion |c 1 (t) − c 2 (u)| =: dist(t, u) auf.Durch Auffin<strong>den</strong> der Nullstellen von dist(u, v) erhält man jene Parameterwerte, welcheauf der jeweiligen Kante zu <strong>den</strong> Schnittpunkten gehören. Einsetzen in eine derbei<strong>den</strong> Parameterdarstellung liefert die Schnittpunkte. Zur Effizienzsteigerung kannanstatt dist(u, v) auch die quadratische Distanzfunktion sqdist(u, v) = dist(u, v) 2herangezogen wer<strong>den</strong>. Eine allgemeinere Möglichkeit, mit welcher auch Schnittpunkteermittelt wer<strong>den</strong> können, ist das Bestimmen von Extrema der quadratischenAbstandsfunktion. Diese Möglichkeit, welche auch in Open CAS<strong>CAD</strong>E umgesetztist, liefert allerdings neben <strong>den</strong> Schnittpunkten auch weitere extremal liegende28


2.4 Boolesche OperationenPunkte, welche aussortiert wer<strong>den</strong> müssen. Weiters müssen in jedem Fall auch jeneSchnittpunkte aussortiert wer<strong>den</strong>, welche zwar auf der eine Kante festlegen<strong>den</strong>Kurve liegen, allerdings nicht innerhalb der bei<strong>den</strong> Begrenzungspunkte der Kante.Der Schnitt zwischen einer Kante c(t) und einem Flächenstück f(u, v) geschiehtanalog zum Schnitt zweier Kanten durch Bestimmen der Nullstellen der Funktion|c(t) − f(u, v)| =: dist(t, u, v).2.3.2 SchnittkurvenSchnittkurven, welche beim Schnitt zweier Flächen auftreten, wer<strong>den</strong> in <strong>CAD</strong>-Systemenüblicherweise näherungsweise bestimmt. Nur <strong>für</strong> einfache Spezialfälle, wie<strong>den</strong> Ebenen Schnitt einer Quadrik, können exakte Lösungen ermittelt wer<strong>den</strong>. Zumapproximativen Fin<strong>den</strong> von Schnittkurven wer<strong>den</strong> einzelne Punkte ermittelt, welcheauf der Schnittkurve liegen, und diese Punkte anschließend durch Freiformkurveninterpoliert. Die Interpolation von Punkten wurde bereits in Abschnitt 2.1behandelt. Bezüglich des Auffin<strong>den</strong>s von Kurvenpunkten wird hier kurz ein Algorithmusvorgestellt, welcher in [PMKM93] ausführlich beschrieben ist. Dieser gehtvon einem bereits bekannten Punkt auf dem Schnitt der bei<strong>den</strong> Flächen aus. Vondiesem Punkt aus sollen nacheinander weitere solcher Punkte bestimmt wer<strong>den</strong>, indemkleine Schritte in Tangentialrichtung der Schnittkurve gemacht wer<strong>den</strong>. DieseTangentialrichtung ist dabei orthogonal auf die Flächennormalen beider Flächenim aktuellen Punkt. Sind die Flächennormalen linear unabhängig, so kann sie als⃗t = ⃗n 1 × ⃗n 2 ermittelt wer<strong>den</strong>. Linear abhängige Flächennormalen bedeuten im entsprechen<strong>den</strong>Punkt eine Berührung der bei<strong>den</strong> Flächen. In einem solchen Fall kannbeispielsweise der Schnitt nur aus diesem einen Punkt bestehen oder sich an diesemPunkt verzweigen.2.4 Boolesche OperationenDie booleschen Operationen Vereinigung, Durchschnitt und Differenz wur<strong>den</strong> im<strong>CAD</strong>-Bereich erstmals im Rahmen von Constructive Solid Geometry (CSG) eingeführt.Seit <strong>den</strong> späten Siebzigerjahren sind diese Operationen auch in Programmenzu fin<strong>den</strong>, die auf der Boundary Representation basieren.2.4.1 Regularisierte boolesche OperationenIn der Boundary Representation wer<strong>den</strong> Modelle als topologisch abgeschlossen definiert.Das bedeutet, dass zum Beispiel die Begrenzungsflächen <strong>eines</strong> Körpers zumKörper zu zählen sind. Es ist nun wünschenswert, dass das Anwen<strong>den</strong> einer booleschenOperation auf zwei Körper wieder eine abgeschlossene Punktmenge und damitein im Sinne der Boundary Representation gültiges Modell liefert. Dies ist allerdings29


2.4 Boolesche OperationenABA-BA∩BAbbildung 2.10: Anwendung nichtregularisierter Boolescher Operationen auf Flächenbei <strong>den</strong> gewöhnlichen Mengenoperationen nicht notwendigerweise der Fall. Daherwer<strong>den</strong> anstatt dieser in <strong>CAD</strong>-Systemen die sogenannten regularisierten booleschenOperationen verwendet, welche mit <strong>den</strong> Symbolen ⋃∗ , ⋂∗ und − ∗ bezeichnet wer<strong>den</strong>.Man gelangt von einem booleschen Operator zu seiner regularisierten Variante,indem man nach Anwen<strong>den</strong> des Operators <strong>den</strong> Abschluss (closue) der inneren Punkte(interior) des Resultats bildet. Die regularisierte Operation zu einer gegebenenbooleschen Operation ⊗ ist damit definiert als: A ⊗ ∗ B := cl(int(A ⊗ B)). Dabeiwer<strong>den</strong> mit int die inneren Punkte bezüglich <strong>eines</strong> geeigneten Umgebungsraumesbestimmt. Im obigen Beispiel ist dieser Umgebungsraum die Ebene R 2 . In anderenFällen treten auch gekrümmte Flächen und Raumkurven als Umgebungsräume auf.2.4.2 AlgorithmusWir wer<strong>den</strong> hier eine Möglichkeit vorstellen, mit der zu zwei Körpern A und B,welche in der Boundary Representation angegeben sind, die Resultate der jeweiligenbooleschen Operationen ermittelt wer<strong>den</strong> können. Gegeben sind also zwei Körperdurch ihre begrenzen<strong>den</strong> Elemente. Aus diesen soll ein Körper erstellt wer<strong>den</strong>, derebenfalls durch die ihn begrenzen<strong>den</strong> Flächenstücke, Kanten und Ecken festgelegtist. Die Begrenzung <strong>eines</strong> Objekts O wer<strong>den</strong> wir im folgen<strong>den</strong> mit ∂O bezeichnen.Satz 21. Gegeben seien zwei Körper A und B. Der Operator ⊗ ∗ bezeichne eine derregularisierten booleschen Operationen. Dann ist die Begrenzung des resultieren<strong>den</strong>Körpers aus Teilen der Begrenzungen der ursprünglichen Körper zusammensetzbar:∂(A ⊗ ∗ B) ⊆ ∂A ∪ ∂BZu beachten ist hierbei, dass auf der rechten Seite die kanonische, also nicht dieregularisierte, Vereinigung auftritt.Für einen Beweis sei auf [RT78] verwiesen. Aus obigem Satz ergibt sich, dass dieFlächenstücke, die <strong>den</strong> resultieren<strong>den</strong> Körper begrenzen, Teile der begrenzen<strong>den</strong> Flächenstückeder ursprünglichen Körper sind. Es treten also keine neuen Flächen auf.30


2.4 Boolesche OperationenDie Kanten des neuen Körpers sind zum einen Teile von Kanten der ursprünglichenKörper (genannt self edges), zum anderen Teile des Schnitts der Körperoberflächen∂A ∩ ∂B (cross edges). Letztere können wie im vorigen Kapitel beschrieben ermit-A∂A ∩ ∂BBAbbildung 2.11: Alle neu auftreten<strong>den</strong> Kanten sind Teil von ∂A ∩ ∂Btelt wer<strong>den</strong>. Zur Ermittlung der self edges des Resultats müssen die Kanten derursprünglichen Körper gegebenenfalls geteilt wer<strong>den</strong>. Diese Unterteilungen erfolgenan <strong>den</strong> Schnittpunkten der Kanten mit der Oberfläche des jeweils anderen Körpers.Eine Kante a i des Körpers A wird etwa in die zwei Teile a i ∩B und a i −B geteilt. Auchdie begrenzen<strong>den</strong> Flächenstücke <strong>eines</strong> Körpers wer<strong>den</strong> in Teile geteilt, die entwederaußerhalb oder innerhalb des anderen Körpers liegen. Dies ist in Abbildung 2.12 zusehen. Den Sonderfall, dass sich zwei begrenzende Flächenstücke der bei<strong>den</strong> Körperin einem zweidimensionalen Bereich überlagern, wollen wir hier nicht näher betrachten.Er bedarf einer gesonderten Behandlung, welche in [RV84] näher erörtert wird.AαBα-Bα∩Baa-Ba∩BAbbildung 2.12: Unterteilung der Kante a und der Fläche α bezüglich BDie Oberflächen der bei<strong>den</strong> Körper können damit in folgende fünf Komponentenzerlegt wer<strong>den</strong>: ∂A−B, ∂A∩B, ∂B −A, ∂B ∩A, ∂A∩∂B. Für die Komponenten derFormen ∂X −Y , ∂X ∩Y und ∂X ∩∂Y sind dabei in der englischsprachigen Literaturauch die jeweiligen Bezeichnungen „∂X out Y “, „∂X in Y “ und „∂X on Y “ üblich.Durch passende Kombination kann <strong>für</strong> jede boolesche Operation A⊗ ∗ B das Ergebnisin folgender Weise zusammengesetzt wer<strong>den</strong>:• ∂(A ∪ ∗ B) = (∂A − B) ∪ (∂B − A)• ∂(A − ∗ B) = (∂A − B) ∪ (∂B ∩ A)31


2.4 Boolesche Operationen• ∂(B ∩ ∗ A) = (∂A ∩ B) ∪ (∂B ∩ A)∂A - B ∂B ∩ A ∂A ∩ B∂B - AAbbildung 2.13: Unterteilungen der einzelnen Körperoberflächen32


3 BenutzeroberflächeDas im Rahmen dieser Arbeit entwickelte Programm trägt <strong>den</strong> Namen Kubos (vomgriechischen κύβος <strong>für</strong> Würfel). Es soll primär dem Einsatz im Unterrichtsfach GeometrischesZeichnen in der siebten und achten Schulstufe dienen. Um diesem Anwendungsgebietgerecht zu wer<strong>den</strong>, ist eine einfache Gestaltung der Benutzeroberflächewünschenswert. Das <strong>CAD</strong>-Programm soll beim Kennenlernen geometrischerObjekte und Konstruktionen eingesetzt wer<strong>den</strong>, dabei aber selbst nicht im Fokus desUnterrichts stehen. Ausgehend von diesem Ziel wer<strong>den</strong> wir in diesem Kapitel Überlegungenzur möglichen Gestaltung diverser Aspekte der Benutzeroberfläche anstellen.Dabei wer<strong>den</strong> wir uns auch mit momentan im Geometrieunterricht eingesetzten Programmenund deren Oberfläche beschäftigen. Weiters wer<strong>den</strong> auch Konzepte <strong>für</strong> dieBenutzeroberfläche von Kubos vorgestellt, die im Rahmen dieser Arbeit noch nichtimplementiert wur<strong>den</strong>.3.1 Übersicht über andere ProgrammeIm Geometrieunterricht an österreichischen allgemeinbil<strong>den</strong><strong>den</strong> höheren Schulen wer<strong>den</strong>derzeit hauptsächlich die Programme <strong>CAD</strong>-3D, SketchUp, GAM und MicroStationeingesetzt. Während <strong>CAD</strong>-3D und SketchUp vorwiegend im Unterrichtsfach„Geometrisches Zeichnen“ genutzt wer<strong>den</strong>, findet MicroStation hauptsächlich imFach „Darstellende Geometrie“ Anwendung. GAM wird in bei<strong>den</strong> Fächern gleichermaßenverwendet.3.1.1 <strong>CAD</strong>-3DDas Programm <strong>CAD</strong>-3D wurde an der Technischen Universität Wien entwickeltund ist explizit <strong>für</strong> <strong>den</strong> Einsatz im Schulunterricht konzipiert[PRS02]. Obwohl esnicht mehr weiterentwickelt wird, und die neueste Version im Jahr 2002 erschienenist, findet es im österreichischen Geometrieunterricht noch desöfteren Verwendung.Der Einsatz in diesem Anwendungsgebiet ist dank einer Generallizenz in Österreichkostenlos.Eine wesentliche Besonderheit von <strong>CAD</strong>-3D ist, dass es ausschließlich Volumsmodelleals Objekte unterstützt. Das Erstellen von einzelnen Flächen, Kurven oderPunkten ist in diesem Programm nicht möglich. Objekte dieser Art können aber als33


3.1 Übersicht über andere ProgrammeAbbildung 3.1: Benutzeroberfläche von KubosEingabeobjekte genutzt wer<strong>den</strong>, wenn sie Teil bestehender Objekte sind. So kann etwaeine Kante <strong>eines</strong> modellierten Quaders zum Festlegen einer Rotationsachse oder<strong>eines</strong> Schiebevektors verwendet wer<strong>den</strong>. Alle modellierten Objekte wer<strong>den</strong> in <strong>CAD</strong>-3D als Polyeder erstellt. Gekrümmte Flächen können damit nicht exakt dargestelltwer<strong>den</strong>, sondern wer<strong>den</strong> durch ebene Flächenstücke angenähert. Die Feinheit der approximieren<strong>den</strong>Polygone kann dabei beim Modellieren festgelegt wer<strong>den</strong>, wobei eingenaueres Modell einen erhöhten Rechenaufwand und Speicherverbrauch zur Folgehat.Die in <strong>CAD</strong>-3D verwendete Modelliermethode ist stark an Constructive Solid Geometry(CSG) angelehnt. Im Wesentlichen wer<strong>den</strong> die Modelle aus vorgegebenenGrundkörpern gebildet, die Raumtransformationen und booleschen Operationen unterworfenwer<strong>den</strong>. Weiters sind zwei Operationen verfügbar, die über die Funktionalitätvon CSG hinausgehen: Die Skalierung <strong>eines</strong> Objekts in Richtung der Koordinatenachsenund das Zerteilen <strong>eines</strong> Körpers entlang einer Ebene. Trotz dieserErweiterungen bleiben die Modelliermöglichkeiten in <strong>CAD</strong>-3D im Vergleich zu anderenProgrammen eher eingeschränkt, was insbesondere auch auf das Fehlen vonSweeps als Modelliermethode zurückzuführen ist.34


3.1 Übersicht über andere Programme3.1.2 SketchUpDas Modellierprogramm SketchUp wurde ursprünglich ab 1999 von der Firma @LastSoftware entwickelt. Nach einer Übernahme durch Google wird die <strong>Entwicklung</strong> mittlerweilevon Trimble Navigation weitergeführt. Die Basisversion von SketchUp istkostenlos verfügbar, eine erweiterte Version wird vom Hersteller kommerziell vertrieben.Bei der Objektmodellierung verfolgt SketchUp einen zu <strong>CAD</strong>-3D konträren Ansatz.Anstatt von Körpern wer<strong>den</strong> hier nur fünf grundlegende ein- und zweidimensionaleObjekttypen unterstützt, aus <strong>den</strong>en durch Sweeping dreidimensionale Modelleentstehen. Bei auf diese Weise entstan<strong>den</strong>en Modellen handelt es sich nicht umVolums- sondern um Flächenmodelle. Da Volumsmodelle von SketchUp nicht unterstütztwer<strong>den</strong>, geht hier die Modellierung anders von statten als bei einem typischen<strong>CAD</strong>-System. So stehen etwa die sonst häufig verwendeten booleschen Operationenin der Standardversion von SketchUp nicht zur Verfügung. Stattdessen bietet Sketch-Up allerdings Funktionen, die zur Mesh-Modellierung zu zählen sind und von kaumeinem anderen <strong>CAD</strong>-System unterstützt wer<strong>den</strong>. Dabei kann ein existierendes Polygonnetzin SketchUp dadurch bearbeitet wer<strong>den</strong>, dass bestehende Polygone durchdas Eintragen weiterer Kanten aufgespalten wer<strong>den</strong> und ihre Eckpunkte verschobenwer<strong>den</strong>. Als Beispiel <strong>für</strong> diese Modelliermethode ist in Abbildung 3.2 das Erstelleneiner Pyramide gezeigt. Diese Art der Erzeugung von Modellen unterscheidet sichgrundlegend von <strong>den</strong> in anderen <strong>CAD</strong>-Programmen vorherrschen<strong>den</strong> Metho<strong>den</strong>.(a) (b) (c)Abbildung 3.2: Erstellen einer Pyramide in SketchUp durch Mesh-ModellierungNeben <strong>den</strong> genannten Metho<strong>den</strong> zur Mesh-Modellierung spielt der Befehl Push/-Pull in SketchUp eine wichtige Rolle. Mittels dieses Befehls können einerseits ebeneFlächen in Richtung ihrer Normalen extrudiert wer<strong>den</strong>, andererseits können auchEinbuchtungen in existieren<strong>den</strong> Flächen modelliert wer<strong>den</strong>.Wie bei <strong>CAD</strong>-3D ist auch bei SketchUp das Arbeiten mit gekrümmten Flächenoder Kurven nicht möglich. Sämtliche Objekte sind durch Polygone beziehungsweiseStrecken angenähert. Da also auch hier etwa Kreise nur approximativ repräsentiertwer<strong>den</strong>, sind genaue Konstruktionen nur eingeschränkt möglich.35


3.1 Übersicht über andere ProgrammeEine Besonderheit von SketchUp stellt das Trimble 3D Warehouse dar. Dies ist eineOnlinedatenbank vorgefertigter 3D-Modelle, die direkt in SketchUp importiert undweiter genutzt wer<strong>den</strong> können. Unter <strong>den</strong> tausen<strong>den</strong> Modellen sind insbesondereauch viele reale Gebäude zu fin<strong>den</strong>. Dies resultiert noch daraus, dass SketchUp vomVoreigentümer Google da<strong>für</strong> zur Verfügung gestellt wurde, um Gebäudemodelle imvirtuellen Globus Google Earth bereitstellen zu können.3.1.3 GAMGAM ist ein didaktisches Geometrieprogramm, welches ausschließlich in einer kostenpflichtigenVersion verfügbar ist. Von <strong>den</strong> bei<strong>den</strong> bisher behandelten Programmenunterscheidet sich GAM im wesentlichen durch genauere Konstruktionsmöglichkeiten,eine größere Anzahl an Werkzeugen und damit einhergehend auch einekompliziertere Bedienung. Wesentlich <strong>für</strong> die genaueren Konstruktionsmöglichkeitenist die exakte interne Repräsentation von Kurven und Flächen. So wer<strong>den</strong> etwaKreise programmintern auch als Kreise anstatt als Polygone behandelt. In derRissdarstellung erscheinen sie zwar durch regelmäßige Vielecke angenähert, etwaigeSchnittpunkt- oder Tangentenermittlungen basieren aber auf der exakten internenForm. Komplexere Objekte, wie etwa Tori, wer<strong>den</strong> allerdings auch programminternnur approximiert dargestellt.Im Gegensatz zum minimalistischen SketchUp bietet GAM viele spezifische Konstruktionswerkzeugezum Modellieren. Ein Beispiel da<strong>für</strong> ist das Werkzeug quadratischePyramide. Nachdem das Programm auch allgemeinere Werkzeuge <strong>für</strong> dieKonstruktion rechteckiger Pyrami<strong>den</strong> sowie regelmäßiger Pyrami<strong>den</strong> bietet, scheintdas Umsetzen <strong>eines</strong> spezifischen Werkzeugs <strong>für</strong> quadratische Pyrami<strong>den</strong> hier nichtunbedingt notwendig. Insbesondere <strong>für</strong> ein didaktisches <strong>CAD</strong>-Programm ist das kritischzu sehen, da dadurch das Erlernen des Programms im Unterricht mehr Zeitin Anspruch nimmt und damit das Erlernen der Geometrie teilweise auf der Streckebleibt. Als weiteres Beispiel ist die Funktion Würfel spezial zu nennen, die dieeinfache Konstruktion <strong>eines</strong> Würfels erlaubt, dessen Raumdiagonale eine der Koordinatenachsenist. Diese Konstruktion kommt in praktischen Beispielen kaum vor,wird aber im Geometrieunterricht desöfteren verwendet, um Raumtransformationeneinzuüben. Durch Vorhan<strong>den</strong>sein dieses speziellen Befehls in GAM ist nun geradedieses Beispiel im Zusammenhang mit dem Einüben von Raumtransformationennicht mehr sinnvoll einsetzbar. Andere Zusatzfunktionen von GAM sind hingegenin didaktischer Hinsicht als sehr sinnvoll zu erachten. Beispielsweise ist es möglich,die Szene in einem Frontal- beziehungsweise Horizontalriss anzuzeigen, was einenLehrplaninhalt des Faches Geometrisches Zeichnen darstellt. Weiters bietet GAMdie Möglichkeit, Kurven und Flächen durch Angabe ihrer Parametrisierung festzulegen,was eine fächerübergreifende Behandlung in dem Fach Mathematik möglichmacht.36


3.2 Eingabemetho<strong>den</strong>3.1.4 MicroStationBei MicroStation handelt es sich um ein professionelles <strong>CAD</strong>-System, das in vielentechnischen Anwendungsbereichen eingesetzt wird. Für <strong>den</strong> Geometrieunterricht hates eine besondere Bedeutung, da der Einsatz in der Schule in Österreich durch einebesondere Lizenzierung relativ billig möglich ist.Von <strong>den</strong> hier beschriebenen Programmen hat MicroStation <strong>den</strong> größten Funktionsumfang.Viele seiner Funktionen gehen dabei über das im üblichen Geometrieunterrichtbehandelte Spektrum hinaus. Als einziges der hier behandelten <strong>CAD</strong>-Programme bietet MicroStation neben dem Arbeiten mit dreidimensionalen Modellenauch einen eigenen Modus <strong>für</strong> zweidimensionale Zeichnungen. Dabei ist dieBenutzeroberfläche in bei<strong>den</strong> Modi die gleiche, was insbesondere im 3D-Modus zuschwer nachvollziehbaren Konstruktionstechniken führt. So erfolgt etwa auch beimArbeiten im Raum die Angabe einer Drehung durch einen Punkt, um <strong>den</strong> gedrehtwird, anstatt einer Achse, und Festlegung einer Spiegelung geschieht nicht über dieAuswahl einer Ebene, sondern <strong>eines</strong> Punktes und einer Achsenrichtung des Benutzerkoordinatensystems.Dieses Benutzerkoordinatensystem wird in MicroStation alsAccuDraw bezeichnet und spielt bei vielen Konstruktionen eine zentrale Rolle. Auchbei diesem Werkzeug gibt es allerdings wieder das Problem, dass es <strong>für</strong> das Arbeitenim 3D-Modus nicht optimal geeignet ist, da es sich um ein zweidimensionalesKoordinatensystem handelt. Das Benutzerkoordinatensystem lässt sich durch verschie<strong>den</strong>eTastenkürzel auch während <strong>eines</strong> Konstruktionsvorganges neu platzieren,ohne diesen zu unterbrechen. Es dient unter anderem dazu, die aktive Zeichenebenefestzusetzen, kartesische oder polare Koordinaten <strong>eines</strong> Eingabepunktes zu bestimmenoder, wie bereits erwähnt, die Richtung einer Spiegelung anzugeben. Aufgrunddieser Funktionsfülle ist es anfänglich recht schwer, sich mit diesem Werkzeug zurechtzufin<strong>den</strong>.3.2 Eingabemetho<strong>den</strong>Das Konstruieren von Objekten beruht bei <strong>den</strong> betrachteten <strong>CAD</strong>-Systemen im wesentlichauf vier Typen von Eingabedaten, die wir hier näher betrachten wer<strong>den</strong>. DreiTypen, die sich in jedem der behandelten Programme wiederfin<strong>den</strong>, sind die Eingabevon Punkten, das Auswählen von bestehen<strong>den</strong> geometrischen Objekten sowie dieEingabe numerischer Größen. Weiters bieten die Programme GAM, SketchUp undMicroStation jeweils Benutzerkoordinatensysteme, die neben ihrer Rolle bei der Eingabevon Koordinaten auch durch ihre Ausrichtung die Konstruktion beeinflussenkönnen.37


3.2 Eingabemetho<strong>den</strong>3.2.1 PunkteingabeDie Eingabe von Punkten bildet die Grundlage zur Konstruktion aller Objekte ineinem <strong>CAD</strong>-System. Sie kann entweder durch die Eingabe der Koordinaten desPunktes geschehen, oder interaktiv in der 3D-Ansicht des Objekts.Die Eingabe der Koordinaten erfolgt üblicherweise durch einoder mehrere Eingabefelder. Sie ist in <strong>den</strong> meisten <strong>CAD</strong>-Programmen in jeder Situation als Alternative zur interaktivenPunkteingabe möglich. SketchUp stellt hier allerdingseine Ausnahme dar. Beispielsweise kann in diesemProgramm der erste Punkt <strong>eines</strong> Streckenzuges nicht durchEingabe seiner Koordinaten festgelegt wer<strong>den</strong>, die restlichenPunkte jedoch schon. Zusätzlich zur Eingabe globaler Koordinatenerlauben es SketchUp, GAM und MicroStationAbbildung 3.3:Koordinateneingabefeldin Kubosauch, Koordinaten in einem Benutzerkoordinatensystem anzugeben, das beliebig imRaum platziert wer<strong>den</strong> kann.Die koordinatenweise Eingabe von Punkten ist eine der wichtigsten Eingabemetho<strong>den</strong>in <strong>CAD</strong>-Programmen und wird damit auch im hier zu implementieren<strong>den</strong> ProgrammKubos umgesetzt wer<strong>den</strong>, in diesem Fall als einzelne Eingabebox <strong>für</strong> die dreiKoordinatenwerte. Für ein rasches Ändern der Koordinatenwerte sind Kurzbefehlevorgesehen, mittels derer durch Drücken der Tasten X, Y und Z die entsprechendeKoordinate im Textfeld markiert wird und dadurch überschrieben wer<strong>den</strong> kann.Die interaktive Eingabe von Punkten am Bildschirm mithilfe der Maus gestaltet sichinsofern problematisch, als sich der Mauszeiger nur in zwei Dimensionen verschiebenlässt, <strong>für</strong> die Festlegung <strong>eines</strong> Raumpunktes aber drei Koordinaten notwendig sind.Dieses Problem wird in <strong>CAD</strong>-Programmen unterschiedlich gelöst.Eine Lösungsmöglichkeit ist das sogenannte Fangen oder Snappen von besonderenPunkten. Dies können beispielsweise bestehende Eckpunkte sowie Schnittpunkteoder Unterteilungspunkte von Strecken sein. Insbesondere professionelle Systeme wieMicroStation unterstützen hier eine Vielzahl an Optionen. Aufgrund von Einschränkungender zugrundeliegen<strong>den</strong> <strong>Entwicklung</strong>splattform wer<strong>den</strong> wir in Kubos nur dieSnapfunktion bestehender Punkte oder Ecken implementieren. Wie in Abschnitt 3.5beschrieben, wird es allerdings die Möglichkeit geben, Schnittpunkte explizit zu konstruierenund diese auch zu fangen.Abgesehen von Fangfunktionen wer<strong>den</strong> zwei weitere Verfahren angewendet, um einenPunkt im Raum eindeutig festzulegen. In <strong>CAD</strong>-3D geschieht dies durch die Eingabe<strong>eines</strong> Punktes in zwei zugeordneten Normalrissen. So kann etwa ein Punkt zunächstim Grundriss festgelegt wer<strong>den</strong>, was seine x- und y-Koordinate bestimmt,und anschließend im Aufriss, wodurch auch die z-Koordinate fixiert ist. Um bei derinteraktiven Eingabe genaue Maßangaben zu erreichen, kann in <strong>CAD</strong>-3D bei dieserEingabemethode ein Koordinatenraster aktiviert wer<strong>den</strong>, welches je nach Einstellungeine Feinheit von 1 mm bis 2 cm hat.38


3.2 Eingabemetho<strong>den</strong>Anstatt die Eingabe in zwei Rissen zu erfordern, bieten SketchUp und Microstationdie Möglichkeit, die Punkteingabe auf eine Ebene einzuschränken. Dies ermöglichteine Festlegung <strong>eines</strong> Punktes in einem Schritt. In MicroStation ist die Zeichenebeneals die x-y-Ebene des Benutzerkoordinatensystems AccuDraw festgelegt. Durchentsprechende Platzierung dieses <strong>Systems</strong> kann damit in jeder beliebigen Ebenedes Raumes konstruiert wer<strong>den</strong>. In SketchUp hingegen ist die aktive Zeichenebeneüblicherweise eine der drei Koordinatenebenen, wobei diese nicht vom Benutzerangegeben, sondern aus der Blickrichtung und Mausposition bestimmt wird. Dabeiwird allerdings die Intention des Benutzers nicht immer richtig erkannt. Dies kann zuungewünschten falschen Konstruktionen führen. Weiters ist es in SketchUp möglich,in ein bereits vorhan<strong>den</strong>es ebenes Flächenstück zu zeichnen.Für die Umsetzung in Kubos soll wie in SketchUp die Punkteingabe auf eine derdrei Koordinatenebenen eingeschränkt wer<strong>den</strong>, wobei diese vom Benutzer explizitvorgegeben wird. In der aktiven Ebene soll dabei ähnlich zu <strong>CAD</strong>-3D ein Koordinatenrasterzur Verfügung stehen, das die exakte Eingabe von Koordinatenwertenermöglicht. Die Feinheit dieses Rasters soll sich dabei an die aktuelle Vergrößerungsstufeder Ansicht anpassen.3.2.2 Eingabe numerischer GrößenIm Bereich des <strong>CAD</strong> ist es bei einigen Werkzeugen möglich, anstatt von Punktennumerische Werte einzugeben, die das resultierende Objekt beschreiben. Ein Zylinderkann so etwa durch Radius und Höhe festgelegt wer<strong>den</strong>. Diese Werte wer<strong>den</strong>in SketchUp über ein Eingabefeld festgelegt, über das auch die Koordinateneingabeerfolgt, in <strong>den</strong> anderen Programmen wer<strong>den</strong> sie über Dialogboxen abgefragt. Wie imfolgen<strong>den</strong> Abschnitt beschrieben, soll in Kubos analog zu SketchUp die Objektmodellierungauf Basis einer möglichst minimalen Auswahl an Körpern und Transformationenerfolgen. Für die in Kubos verfügbaren Werkzeuge ergibt sich, dass nur dieEingabe der Radien <strong>für</strong> Kreis und Kugel sowie der Extrusionshöhe als numerischeGrößen sinnvoll erscheinen. Die Eingabe solcher Größen wäre analog zu SketchUpüber das schon <strong>für</strong> Punkte verwendete Eingabefeld durchzuführen, wurde allerdingsim Rahmen dieser Arbeit nicht implementiert.3.2.3 BenutzerkoordinatensystemeWie zuvor erwähnt, wer<strong>den</strong> Benutzerkoordinatensysteme in <strong>CAD</strong>-Systemen verwendet,um Punktkoordinaten bezüglich anderer Bezugssysteme eingeben zu können.Neben dieser Funktion bei der Punkteingabe können sie aber auch in anderer Formin einer Konstruktion eingesetzt wer<strong>den</strong>, und zwar zum Festlegen einer gewissenAusrichtung von Objekten.So wer<strong>den</strong> etwa in allen betrachteten Systemen Rechtecke standardmäßig so ausgrichtet,dass ihre Kanten achsenparallel bezüglich des aktiven Benutzerkoordina-39


3.3 GrundobjekteAbbildung 3.4: Benutzerkoordinatensystem in GAMtensystems verlaufen. Weiters dient ein Benutzerkoordinatensystem beispielsweisein MicroStation der Ausrichtung der Drehachse oder Festlegung der Spiegelungsrichtung.Insbesondere in MicroStation spielt das Benutzerkoordinatensystem, das als Accu-Draw bezeichnet wird, eine zentrale Rolle. Es handelt sich dabei um ein zweidimensionalesKoordinatensystem, welches meistens parallel zu einer der Koordinatenebenendes globalen Koordinatensystems ausgerichtet ist. Entsprechende Ausrichtungensind über die Tasten T, F und S zu erreichen, welche das Benutzerkoordinatensystemjeweils parallel zum Grundriss (Top), Aufriss (Front) oder Kreuzriss (Side)ausrichten. Weiters kann AccuDraw über das Tastenkürzel R-Q <strong>für</strong> rotate quick umseine z-Achse gedreht wer<strong>den</strong> oder durch das Definieren <strong>eines</strong> Benutzerkoordinatensystems(ACS) überhaupt beliebig ausgerichtet wer<strong>den</strong>.In der ersten Implementierung von Kubos scheint es sinnvoll, analog zu AccuDraweine Ausrichtung bezüglich Grundriss, Aufriss oder Kreuzriss festlegen zu können,um etwa die Zeichenebene oder die Richtung einer Drehachse oder einer Spiegelungfestzusetzen. Eine Änderung der Ausrichtung ist in Kubos über <strong>den</strong> MenüpunktAktive Ebene umschalten oder das Betätigen der Leertaste möglich.3.3 GrundobjekteAls Grundobjekte oder Primitive wer<strong>den</strong> jene Objekttypen bezeichnet, die in einem<strong>CAD</strong>-System durch einen direkten Befehl erstellt wer<strong>den</strong> können. Alle anderenObjekte wer<strong>den</strong> aus <strong>den</strong> Grundobjekten abgeleitet, was meist durch Sweeps sowieboolesche Operationen geschieht. Die hier betrachteten <strong>CAD</strong>-Systeme unterschei<strong>den</strong>sich stark bezüglich der von ihnen unterstützten Grundobjekte. So bietet etwa GAMdrei verschie<strong>den</strong>e Befehle zur Konstruktion von Pyrami<strong>den</strong>, während in SketchUpund MicroStation diese Funktion zur Gänze fehlt.40


3.3 GrundobjekteProgramm verfügbare Grundobjekte<strong>CAD</strong>-3D Quader, regelmäßiges Prisma, regelmäßige Pyramide, Kugel,Zylinder, Kegel, Torus, Pentagondodekaeder, Ikosaeder, ein- undzweischaliges Drehhyperpoloid, DrehparaboloidSketchUp Streckenzug, Rechteck, regelmäßiges Vieleck, Kreisscheibe,KreisbogenGAM Punkt, Strecke, Streckenzug, Quadrat, Rechteck, regelmäßigesVieleck, Kreis, Kreisbogen, Kreissektor, Ellipse, Parabel,Hyperbel, Würfel, Quader, quadratische und rechteckigePyramide, regelmäßige Pyramide, regelmäßiges Prisma, Zylinder,Kegel, Kugel, platonische Körper, Dach, Paraboloid, TorusMicroStation Punkt, Strecke, Streckenzug, Polygon, Kreis, Kreisbogen, Ellipse,Rechteck, regelmäßiges Vieleck, Quader, Kugel, Zylinder,Kegelstumpf, Torus, ZylindersektorKubos Punkt, Strecke, Gerade, Kreis, Kreisscheibe, Rechteck, KugelTabelle 3.1: In <strong>den</strong> betrachteten <strong>CAD</strong>-Systemen verfügbare GrundobjekteDa das hier entwickelte didaktische Programm eine möglichst einfache Benutzeroberflächehaben soll, ist auch eine reduzierte Auswahl an Grundobjekten wünschenswert.Daher scheint eine ungefähre Orientierung am Funktionsumfang von SketchUpangebracht. Dieses stellt nur die fünf Grundobjekte Streckenzug, Rechteck, regelmäßigesVieleck, Kreisscheibe und Kreisbogen zur Verfügung. Mit <strong>den</strong> Grundobjektenlassen sich also ausschließlich ein- und zweidimensionale Objekte erzeugen. Körperwer<strong>den</strong> in SketchUp durch Sweeps erstellt. So können beispielsweise Zylinderoder Quader auf einfache Weise durch Extrusion von Kreisscheiben beziehungsweiseRechtecken erzeugt wer<strong>den</strong>. Beim Erstellen von Drehkörpern, wie Kugel und Kegel,wird die Konstruktion bereits wesentlich komplizierter. Diese Körper wer<strong>den</strong> inSketchUp durch Sweeping entlang <strong>eines</strong> Kreises erstellt. Um beispielsweise eine imUrsprung zentrierte Kugel zu erstellen, würde man zunächst eine Kreisscheibe inder y-z-Ebene erstellen, welche das Rotationsprofil darstellt, und diese anschließen<strong>den</strong>tlang <strong>eines</strong> weiteren Kreises extrudieren, dessen Achse die z-Achse ist. Um einederart umständliche Konstruktion <strong>eines</strong> solchen grundlegen<strong>den</strong> Körpers nicht notwendigzu machen, soll Kubos zumindest ein Werkzeug zum Erstellen einer Kugelenthalten. Außerdem sollen wie in SketchUp Werkzeuge zum Erstellen von Rechteckenund Kreisscheiben zur Verfügung stehen, um die Konstruktion von Quadernund Zylindern zu ermöglichen.Im Hinblick auf <strong>den</strong> Geometrieunterricht soll in Kubos verglichen mit SketchUp größererWert auf Möglichkeiten zum genauen Konstruieren gelegt wer<strong>den</strong>. Aus dieserÜberlegung heraus scheint es sinnvoll, auch Werkzeuge zum Erstellen von Punkten,Gera<strong>den</strong> und Kreisen bereitzustellen. Da weiters natürlich auch ein Werkzeugzum Erstellen von Strecken benötigt wird, erhalten wir die folgen<strong>den</strong> Werkzeuge, dieumzusetzen sind: Punkt, Strecke, Gerade, Kreis, Kreisscheibe, Rechteck und Kugel.41


3.4 RaumtransformationenEs ist nun zu überlegen, wie die interaktive Konstruktion dieser Objekte in Kuboserfolgen wird. Wie in Abschnitt 3.2 beschrieben, kann zur Konstruktion die Eingabevon Punkten und Objekten sowie die Ausrichtung der aktiven Ebene verwendetwer<strong>den</strong>.Für die Konstruktion von Punkt, Strecke und Gerade erscheint die Umsetzung offensichtlich:Die Konstruktion <strong>eines</strong> Punktes erfolgt über die Angabe seiner Lage,die einer Strecke über Angabe von Anfangs- und Endpunkt und die einer Geradedurch zwei beliebige auf ihr liegende Punkte.Die Konstruktion von Kreisen beziehungsweise Kreisscheiben sowie von Rechteckenwird von SketchUp, GAM und MicroStation unterstützt. Bei allen drei Programmenspielt in diesen Konstruktionen die Ausrichtung des Benutzerkoordinatensystemseine wesentliche Rolle. Sofern die Angabeelemente es zulassen, liegen die erstelltenObjekte in einer Koordinatenebene des Benutzerkoordinatensystems, wobei bei einemRechteck die Seiten achsenparallel liegen. Durch diese Vorgabe ist die Lage derObjekte soweit eingeschränkt, dass <strong>für</strong> ein Rechteck die Angabe zweier gegenüberliegenderEcken und <strong>für</strong> einen Kreis die Angabe des Mittelpunkts und <strong>eines</strong> auf demKreis liegen<strong>den</strong> Punktes ausreicht. Auch in Kubos soll die Konstruktion auf dieseWeise umgesetzt wer<strong>den</strong>.3.4 RaumtransformationenDie Positionierung von Objekten im <strong>CAD</strong>-System kann mittels verschie<strong>den</strong>er Raumtransformationengeändert wer<strong>den</strong>. Insbesondere in <strong>CAD</strong>-3D und GAM spielen dieseeine wichtige Rolle, da in diesen Programmen neu erstellte Objekte immer im Koordinatenursprungentstehen und erst an die gewünschte Position bewegt wer<strong>den</strong>müssen.Die grundlegen<strong>den</strong> Transformationen Translation, Drehung und Spiegelung wer<strong>den</strong>von allen vier betrachteten Programmen unterstützt. Obwohl SketchUp keinen eigenenBefehl <strong>für</strong> eine Spiegelung hat, kann eine solche ausgeführt wer<strong>den</strong>, indem beieiner Skalierung in eine der Koordinatenrichtungen mit dem Faktor -1 skaliert wird.Dies zeigt wieder <strong>den</strong> Ansatz dieses Programms, nur einen minimalistischen Satz anWerkzeugen bereitzustellen. Neben <strong>den</strong> drei bereits erwähnten Bewegungen bietendie bei<strong>den</strong> didaktischen Programme <strong>CAD</strong>-3D und GAM auch einen separaten Befehlzum Ausführen einer Schraubung. Da eine Schraubung allerdings ohnehin ausTranslation und Drehung zusammensetzbar ist, wer<strong>den</strong> wir auf die Umsetzung <strong>eines</strong>solchen Befehls verzichten.Das Festlegen einer Translation ist bei allen vier betrachteten Programmen durchdie Angabe <strong>eines</strong> Start- und Endpunktes möglich. Die angegebenen Punkte legen<strong>den</strong> Schiebvektor fest. Des Weiteren bieten GAM und SketchUp die Möglichkeit,einen Schiebvektor direkt durch Koordinatenwerte anzugeben. In Kubos soll nur dieerstere Möglichkeit umgesetzt wer<strong>den</strong>.42


3.5 Boolesche OperationenFür die Spiegelung von Objekten sind in <strong>den</strong> Programmen grundsätzlich zwei verschie<strong>den</strong>eAnsätze zu fin<strong>den</strong>. GAM und <strong>CAD</strong>-3D bieten die Möglichkeit, an einerdurch drei Punkte festgelegten Ebene zu spiegeln. In MicroStation und SketchUpist nur eine Spiegelung in Richtung einer Achse des Benutzerkoordinatensystemsmöglich. Bei der Spiegelung in MicroStation kann dabei in <strong>den</strong> Werkzeugoptionenzwischen vertikal und horizontal gewählt wer<strong>den</strong>. Ersteres bedeutet dabei eine Spiegelungin Richtung der x-Achse, zweiteres eine in Richtung der y-Achse. Zusätzlichzur Angabe der Spiegelungsrichtung ist in MicroStation ein in der Spiegelungsebeneliegender Punkt anzugeben. Die Spiegelungsebene ist damit durch einen Punktund ihre Normalrichtung festgelegt. Am Ansatz in MicroStation ist insbesondere zubemängeln, dass die Bedeutungen der Optionen horizontal und vertikal kaum ersichtlichsind und daher vom Benutzer oft nur durch Versuch und Irrtum die korrekteEinstellung ermittelt wird. Für Kubos wird zur Spiegelung eine besonders vereinfachteMöglichkeit zur Wahl der Spiegelungsebene umgesetzt wer<strong>den</strong>: Diese wirdimmer die aktive Ebene, also eine der drei Koordinatenebenen sein. Dies bewirktnatürlich, dass nach einer Spiegelung oft noch eine Translation durchgeführt wer<strong>den</strong>muss, um ein gespiegeltes Objekt an die gewünschte Position zu bringen.3.5 Boolesche OperationenDie booleschen Operationen Vereinigung, Durchschnitt und Differenz stellen in <strong>den</strong>meisten <strong>CAD</strong>-Systemen eine grundlegende und wichtige Möglichkeit zum Modellierenvon Objekte dar. Eine besondere Ausnahme ist hier SketchUp, welches inder Standardausführung keine booleschen Operationen bietet. Im Gegensatz dazuspielen boolesche Operationen beim auf Constructive Solid Geometry basieren<strong>den</strong><strong>CAD</strong>-3D eine besonders zentrale Rolle. Üblicherweise wer<strong>den</strong> boolesche Operationeninsbesondere mit Volumselementen verwendet. Im Folgen<strong>den</strong> wollen wir Überlegungendazu anstellen, wie boolesche Operationen auch auf andere Objekttypenangewendet wer<strong>den</strong> können. Es wird sich herausstellen, dass die entsprechen<strong>den</strong>Werkzeuge in einer Weise verallgemeinert wer<strong>den</strong> können, die die Funktionalitätvieler anderer Werkzeuge einschließt. Eine solche Verallgemeinerung kann damit zueiner reduzierten und einfacheren Benutzeroberfläche führen. Beispielsweise könnteim Rahmen einer derartigen Verallgemeinerung auch das Vereinigen zweier Flächenmöglich sein, was beispielsweise in MicroStation in einem eigenen Befehl umgesetztist. Im Folgen<strong>den</strong> wer<strong>den</strong> wir uns vor allem mit Werkzeugen in MicroStation beschäftigenund überlegen, wie diese in Werkzeuge <strong>für</strong> verallgemeinerte boolescheOperationen integriert wer<strong>den</strong> können.3.5.1 VereinigungEine Vereinigung kann nur zwischen Objekten der gleichen Dimension sinnvoll definiertwer<strong>den</strong>. Neben dem Standardfall der Vereinigung von Körpern ist nun auch43


3.5 Boolesche Operationeneine Vereinigung von Flächen beziehungsweise von Kanten <strong>den</strong>kbar.Eine Vereinigung von Flächen kann in zwei konkreten Fällen umgesetzt wer<strong>den</strong>.Zum einen könnte sie angewendet wer<strong>den</strong>, wenn zwei Flächen entlang einer Kantezusammentreffen. In diesem Fall wäre der aus <strong>den</strong> Flächen zusammengesetzte Flächenverbandals Vereinigung der Flächen anzusehen. Zum anderen ist es auch möglich,dass zwei Flächen einen ganzen zweidimensionalen Bereich gemeinsam haben,insbesondere wenn die Flächen in einer gemeinsamen Ebene liegen. Auch hier ist innaheliegender Weise eine Vereinigung der Flächen definierbar. Die bei<strong>den</strong> genanntenOperationen wer<strong>den</strong> von MicroStation jeweils in Form der Befehle Flächen Vereinigenund Bereich erstellen - Vereinigung umgesetzt. In Kubos sollen sie zwecks einereinfachen Benutzeroberfläche mit dem Befehl Vereinigung durchführbar sein.Im Zusammenhang mit Kanten scheint vor allem eine Vereinigung von aneinanderanschließen<strong>den</strong> Kanten zu einer Kantenfolge ein in <strong>CAD</strong>-Systemen sinnvoll einsetzbaresund wichtiges Werkzeug zu sein. In MicroStation ist diese Funktionalität imWerkzeug Komplexe Kette erstellen umgesetzt. In Kubos soll sie wiederum durch<strong>den</strong> verallgemeinerten Vereinigungsbefehl durchführbar sein.3.5.2 DurchschnittDer Durchschnitt zweier Objekte kann in Analogie zur Vereinigung unmittelbar <strong>für</strong>zwei Körper sowie <strong>für</strong> zwei komplanare Flächen definiert wer<strong>den</strong>. In MicroStationsind entsprechende Funktionalitäten in <strong>den</strong> Befehlen Durchschnitt und BereichErstellen - Durchschnitt zu fin<strong>den</strong>.Eine weitere Konstruktion, die im Rahmen dieses Befehls umgesetzt wer<strong>den</strong> kann,ist das Bestimmen von Schnittpunkten. Dies schließt sowohl Schnittpunkte zwischenzwei Kurven als auch zwischen einer Kurve und einer Fläche ein. In vielen gängigen<strong>CAD</strong>-Programmen, wie MicroStation oder SketchUp, ist die explizite Konstruktionvon Schnittpunkten meist nicht notwendig, da die entsprechen<strong>den</strong> Punkte direktmittels Snapfunktion ausgewählt wer<strong>den</strong> können. In Kubos wird diese Funktion allerdingsbenötigt, da der Geometriekern eine solche Snapfunktion <strong>für</strong> Schnittpunktenicht unterstützt.Weitere wünschenswerte Schnittoperationen sind das Bestimmen der Schnittkurvezweier Flächen sowie der Schnittfläche <strong>eines</strong> Körpers mit einer Fläche. Währenderstere in MicroStation unter der Funktion Trimmung erstellen - Schnittpunktkurveumgesetzt ist, fehlt die zweite in diesem Programm. Die bei<strong>den</strong> genannten Operationenkönnen im Geometrieunterricht insbesondere bei der Behandlung von ZylinderundKegelschnitten sinnvoll eingesetzt wer<strong>den</strong>.3.5.3 DifferenzWie schon bei Vereinigung und Durchschnitt kann neben der Differenz von Körpernauch eine Differenz von komplanaren Flächen in naheliegender Weise definiert44


3.5 Boolesche OperationenAbbildung 3.5: Ebener Schnitt <strong>eines</strong> Drehzylinders, der in Kubos durch <strong>den</strong> BefehlDurchschnitt erstellt wurdewer<strong>den</strong>.Des Weiteren ist eine Verallgemeinerung des Befehls <strong>den</strong>kbar, der das Zerteilenvon Objekten ermöglicht. Als Beispiel betrachten wir hierzu eine Strecke s sowieeinen darauf liegen<strong>den</strong> Punkt P. In diesem Fall soll die Differenzbildung s\P darinresultieren, dass die Strecke am gegebenen Punkt aufgeteilt wird. Das Ergebnisdieser Operation sind also zwei Teilstrecken von s, die im Punkt P zusammentreffen.Das gleiche Resultat erhalten wir, wenn wir als zu subtrahierendes Objekt nichteinen Punkt, sondern etwa eine Kurve oder eine Fläche wählen, die die ursprünglicheStrecke in einem Punkt schnei<strong>den</strong>. Weitere mögliche Operationen sind das Aufteileneiner Fläche entlang einer Kurve oder einer anderen Fläche sowie das Aufspalten<strong>eines</strong> Körpers entlang einer Fläche.Wir wollen nun alle bisher genannten Operationen durch eine allgemeinere Beschreibungerfassen. Es seien also zwei geometrische Objekte A und B gegeben. Wir fassendiese im folgen<strong>den</strong> als Punktmenge auf, wobei wir die Punktmengen als abgeschlossenund zusammenhängend voraussetzen. Die neu definierte Differenzbildung geschiehtnun in folgen<strong>den</strong> Schritten:1. Man bildet die Differenz D der bei<strong>den</strong> Punktmengen, welche im allgemeinennicht mehr abgeschlossen und zusammenhängend sein wird.2. Man bildet die maximalen zusammenhängen<strong>den</strong> Teilmengen U i von D. Maximalsoll dabei heißen, dass keine dieser Teilmengen in einer noch größerenzusammenhängen<strong>den</strong> Teilmenge von D enthalten ist.3. Man bildet <strong>den</strong> Abschluss Ūi jeder Menge U i .Die resultieren<strong>den</strong> Mengen Ūi bil<strong>den</strong> das Ergebnis der neu definierten Differenzbildung.45


3.5 Boolesche OperationenBefehl in MicroStationBefehl in KubosVereinigungVereinigungDurchschnittDurchschnittDifferenzDifferenzBereich Erstellen - VereinigungVereinigungBereich Erstellen - DurchschnittDurchschnittBereich Erstellen - DifferenzDifferenzFlächen vereinigenVereinigungKomplexe Kette erstellenVereinigungElemente timmenDifferenzTrimmung erstellen - 1. FlächeDifferenzVolumenelement/Fläche mit linearem Element verschnei<strong>den</strong> DurchschnittTrimmung erstellen - SchnittpunktkurveDurchschnittTabelle 3.2: Diverse Befehle in MicroStation und die entsprechen<strong>den</strong> Befehle inKubos46


4 ImplementierungDas im Rahmen dieser Arbeit entwickelte Programm wird auf der SoftwareplattformOpen CAS<strong>CAD</strong>E Technology (meist abgekürzt als Open CAS<strong>CAD</strong>E oder OCC)basieren, welche zum Entwickeln von <strong>CAD</strong>-Programmen dient. Open CAS<strong>CAD</strong>Ebietet sowohl die benötigten geometrischen Algorithmen als auch Funktionalitätenzur Erstellung interaktiver Benutzeroberflächen. Es wurde ursprünglich Mitte derNeunzigerjahre unter dem Namen CAS.<strong>CAD</strong>E entwickelt. Seit 1999 ist es unterdem derzeitigen Namen als Open-Source-Software verfügbar. Die Software wird vonder Firma OPEN CAS<strong>CAD</strong>E S.A.S. weiterentwickelt, die sich über <strong>den</strong> Verkaufvon Softwareerweiterungen sowie Kun<strong>den</strong>beratung und -unterstützung finanziert.Seit 2011 existiert auch eine von Freiwilligen überarbeitete Variante, die als OpenCAS<strong>CAD</strong>E Community Edition oder OCE bezeichnet wird. Diese basiert jeweilsauf der aktuellen Version von Open CAS<strong>CAD</strong>E und bietet diverse Verbesserungenund Fehlerbehebungen.Open CAS<strong>CAD</strong>E wird üblicherweise zusammen mit der Programmiersprache C++eingesetzt. Durch das pythonOCC Projekt ist es allerdings auch möglich, die Funktionalitätmit der Sprache Python zu nutzen. Python ermöglicht als dynamischeProgrammiersprache eine schnellere und einfachere <strong>Entwicklung</strong>. Abgesehen von derStandardschnittstelle zu Open CAS<strong>CAD</strong>E bietet pythonOCC einige weitere Pakete,die vereinfachte oder zusätzliche Funktionalitäten bereitstellen. Beispiele hier<strong>für</strong>sind etwa eine vereinfachte Möglichkeit zur Objektdarstellung durch das Paket Displayoder erweiterte geometrische Konstruktionen durch das Paket Util. Das imRahmen dieser Arbeit erstellte Programm wurde auf Basis von pythonOCC Version0.5 entwickelt und ist <strong>für</strong> <strong>den</strong> Einsatz mit Python 2.6 und Python 2.7 unter Linuxund Windows konzipiert. Als grafisches Toolkit kommt Qt zum Einsatz. Für eineEinführung in das Arbeiten mit Python und Qt sei auf [Str06] verwiesen.4.1 DokumentationFür Open CAS<strong>CAD</strong>E sind drei Arten offizieller Dokumentation verfügbar. Die sogenannteOverview Documentation bietet generelle Erklärungen und Übungsbeispiele.Für bestimmte Themen wer<strong>den</strong> diese Erklärungen in <strong>den</strong> User Guides vertieft. DieAPI-Dokumentation stellt indessen Hilfe zu <strong>den</strong> einzelnen Funktionen und Klassen inOpen CAS<strong>CAD</strong>E bereit. Die User Guides sind als PDF-Dokumente verfügbar, währenddie anderen bei<strong>den</strong> Teile der Dokumentation im HTML-Format bereitstehen.47


4.2 Grundobjekte und ObjekttypenAlle Teile der Dokumentation sind in <strong>den</strong> offiziellen Installationspaketen enthalten.Leider ist die verfügbare Dokumentation von eher schlechter Qualität. Während dieUser Guides einige Aspekte sehr detailliert beschreiben, lassen sie andere ganz aus.Es ist daher nicht möglich, mithilfe der Dokumentation ein vollständiges Bild überdie Bibliothek zu gewinnen. Auch die API-Dokumentation ist teilweise unvollständigund erklärt in vielen Fällen <strong>den</strong> Zweck verschie<strong>den</strong>er Funktionen und Optionen nurunzureichend.4.2 Grundobjekte und ObjekttypenDie in Abschnitt 1.2 beschriebenen geometrischen und topologischen Objekte wer<strong>den</strong>in Open CAS<strong>CAD</strong>E von Klassen in <strong>den</strong> Modulen gp und Geom sowie TopoDSrepräsentiert. Die ersten bei<strong>den</strong> Module dienen der Beschreibung der Geometrie,wobei geometrische Primitive in gp und parametrische Objekte in Geom zu fin<strong>den</strong>sind. Topologische Objekte wiederum fin<strong>den</strong> sich in TopoDS. Diese und weitere Objekttypensind in Tabelle 4.1 aufgelistet.(a) geometrische ObjekteName Beschreibunggp_Pnt PunktGeom_Curve KurveGeom_Surface Fläche(b) topologische ObjekteNameBeschreibungTopoDS_Vertex EckeTopoDS_Edge KanteTopoDS_Wire KantenfolgeTopoDS_Face FlächenstückTopoDS_Shell FlächenverbandTopoDS_Solid KörperNamegp_Ax1gp_Vecgp_Dirgp_Ax2gp_Ax3gp_Trsf(c) sonstige ObjekteBeschreibungPfeilVektorRichtungAchsenkreuz (Rechtssystem)Achsenkreuz (beliebig)Affine TransformationTabelle 4.1: Ausgewählte Klassen in <strong>den</strong> Modulen gp, Geom und TopoDSEin Zugreifen von <strong>den</strong> topologischen auf die darunterliegen<strong>den</strong> geometrischen Objekteist mittels der Klassen BRep_Tool und TopExp_Explorer möglich. Die FunktionenBRep_Tool.Pnt, BRep_Tool.Curve und BRep_Tool.Face ermöglichen das direkteKonvertieren von Ecken, Kanten und Flächenstücken in die zugrundeliegen<strong>den</strong>48


4.3 Objektmodellierunggeometrischen Repräsentationsformen. Dies ist beispielsweise nötig, um auf die Koordinateneiner Ecke zuzugreifen, da die Klasse TopoDS_Vertex im Gegensatz zugp_Pnt diesen Zugriff nicht erlaubt. Um auf Unterobjekte, wie die Flächen <strong>eines</strong>Körpers oder die Teilkanten einer Kantenfolge zuzugreifen, kann die Klasse Top-Exp_Explorer verwendet wer<strong>den</strong>.4.3 ObjektmodellierungUm nicht direkt mit der Geometrie oder Topologie einzelner Objekte arbeiten zumüssen, wer<strong>den</strong> zum Erstellen geometrischer und topologischer Elemente meist Hilfsfunktionenverwendet, die beispielsweise direkt einen Kreisbogen oder einen Quadererstellen. In Tabelle 4.2 ist eine Auswahl an wichtigen Konstruktionsmöglichkeitenaufgelistet, die beschreibt, mit welchen Befehlen gewisse Objekte erstellt wer<strong>den</strong>.Die Funktionsweise und Syntax einiger der aufgelisteten Funktionen wollen wir anzwei Beispielen erläutern. Sofern Python und die benötigten Bibliotheken OCC undQt installiert sind, kann der Leser diese Beispiele auch in einer interaktiven Pythonkonsoleselbst nachvollziehen. Das erste Beispiel zeigt das Erstellen <strong>eines</strong> Quaders.Es beinhaltet bloß zwei Befehle:from OCC import BRepPrimAPIquader = BRepPrimAPI . BRepPrimAPI_MakeBox ( 3 , 4 , 5 ) . S o l i d ( )In der ersten Zeile wird das Modul BRepPrimAPI gela<strong>den</strong>. Dieses stellt verschie<strong>den</strong>eFunktionen zum Erstellen von Körpern zur Verfügung. In der zweiten Zeile wirdder Befehl BRepPrimAPI_MakeBox aus dem eben importierten Modul aufgerufen.Mithilfe dieses Befehls wird ein Quader mit <strong>den</strong> Abmessungen 3 × 4 × 5 erstellt. ZurPositionierung des Quaders hätten wir als weiteres Argument noch ein Achsenkreuzvom Typ gp_Ax2 übergeben können. Da wir dies nicht getan haben, wird der Quaderim Ursprung erstellt wer<strong>den</strong>. Um nun <strong>den</strong> konstruierten Quader als Volumsmodellzu erhalten, rufen wir die Methode .Solid() auf. Eine Alternative wäre der Befehl.Shell(), welcher ein Flächenmodell in Form <strong>eines</strong> Flächenverbandes zurückgibt.In einem weiteren Beispiel wollen wir nun eine Kreisscheibe erstellen und positionieren:from OCC import gp , Geom, BRepBuilderAPImittelpunkt = gp . gp_Pnt ( 1 , 1 , 0)achsenrichtung = gp . gp_Dir ( 1 , 1 , 2)a x i s = gp . gp_Ax2( mittelpunkt , achsenrichtung )r a d i u s = 0 . 5kreis_curve = Geom . Geom_Circle ( axis , r a d i u s ) . GetHandle ( )kreis_edge = BRepBuilderAPI . BRepBuilderAPI_MakeEdge ( kreis_curve ) . Edge ( )kreis_wire = BRepBuilderAPI . BRepBuilderAPI_MakeWire ( kreis_edge ) . Wire ( )k r e i s s c h e i b e = BRepBuilderAPI . BRepBuilderAPI_MakeFace ( kreis_wire ) . Face ( )Die erste Zeile dient hier wieder dem La<strong>den</strong> der benötigten Module. In diesem Beispielwer<strong>den</strong> die drei Module gp, Geom, und BRepBuilderAPI gela<strong>den</strong>. In der zweiten49


4.3 ObjektmodellierungBefehlBeschreibungBRepBuilderAPI_MakeVertex Ecke aus PunktBRepBuilderAPI_MakeEdge Kante aus allgemeiner KurveGC_MakeSegmentStrecke aus Anfangs- und EndpunktGeom_CircleKreis aus Achsenkreuz und RadiusGC_MakeArcOfCircle KreisbogenBRepBuilderAPI_MakeWire Kantenfolge aus einzelnen KantenBRepBuilderAPI_MakeFace Ebenes Flächenstück aus begrenzenderKantenfolgeBRepBuilderAPI_MakeFace Flächenstück aus Fläche und BegrenzungBRepBuilderAPI_MakeShell Flächenverband aus einzelnen FlächenBRepBuilderAPI_MakeSolid Körper aus begrenzendem FlächenverbandBRepPrimAPI_MakeSphere Kugel aus Mittelpunkt und RadiusBRepPrimAPI_MakeBox Quader aus Achsenkreuz undKantenlängenBRepPrimAPI_MakeCylinder Zylinder aus Achsenkreuz, Höhe undRadiusBRepPrimAPI_MakeCone Kegelstumpf aus Achsenkreuz, Höhe undRadienBRepPrimAPI_MakeTorus Torus aus Achsenkreuz und RadienBRepPrimAPI_MakePrism Extrusionskörper aus Profilfläche undVektorBRepPrimAPI_MakeRevol Drehkörper aus Profilfläche und Pfeil(Drehachse)BRepAlgoAPI_Common Durchschnitt zweier ObjekteBRepAlgoAPI_FuseVereinigung zweier ObjekteBRepAlgoAPI_CutDifferenz zweier ObjekteTabelle 4.2: Wichtige Funktionen zum Erstellen von Objektenund dritten Zeile wer<strong>den</strong> der Mittelpunkt und die Achsenrichtung durch ihre dreiKoordinaten festgelegt. Aus diesen bei<strong>den</strong> Angaben wird ein Achsenkreuz erstellt,das zur Positionierung des Kreises dient. Bei diesem Achsenkreuz wird nur die Richtungder z-Achse angegeben. Sie wird die Kreisachse darstellen. Die Richtung deranderen Achsen ist <strong>für</strong> diese Anwendung nicht von Bedeutung und kann bei derErstellung des Achsenkreuzes weggelassen wer<strong>den</strong>. In der sechsten Zeile wird mitdem Befehl Geom_Circle ein Kreis als Kurve durch die Angabe seiner Positionierungund s<strong>eines</strong> Radius konstruiert. Anschließend wird auf dessen Basis zunächsteine Kante, dann eine aus dieser Kante bestehende Kantenfolge und anschließendein Flächenstück erstellt.50


4.4 Objektdarstellung4.4 ObjektdarstellungDie Darstellung von modellierten Objekten geschieht in OpenCAS<strong>CAD</strong>E mithilfeder Klassen V3d_Viewer, V3d_View und AIS_InteractiveContext. Diese Klassenstellen verschie<strong>den</strong>e Funktionalitäten bereit, die die Objektdarstellung und Ansichtssteuerungbetreffen. Beispielsweise können mit dem Befehl AIS_InteractiveContext.-Display() neue Objekte zur Ansicht hinzugefügt wer<strong>den</strong>, mit V3d_View.SetZoom()kann die Vergrößerungsstufe um einen bestimmten Faktor geändert wer<strong>den</strong> und derBefehl V3d_Viewer.setLightOn() dient dazu, eine Lichtquelle hinzuzufügen.Um eine einheitlichere Funktionsweise zu erreichen, wer<strong>den</strong> wir in der Implementierungeine Klasse bereitstellen, die die wichtigsten Befehle zur Objektdarstellungund Ansichtssteuerung in einer vereinfachten Form bietet. Diese wird im Programmunter gui.viewer_3d zu fin<strong>den</strong> sein. Die genannten Basisobjekte sind dabei als viewer_3d.context,viewer_3d.viewer und viewer_3d.view zugänglich und können <strong>für</strong>erweiterte Funktionen direkt verwendet wer<strong>den</strong>. Die wichtigsten Befehle im Zusammenhangmit der Ansichtssteuerung sind in Tabelle 4.3 aufgelistet.Befehlviewer_3d.eye =BeschreibungSetzen der Kameraposition (Drehen der Kameraum <strong>den</strong> Ursprung)Verschieben der KameraSetzen des VergrößerungsfaktorsSetzen der aktiven Ebene (Rasterebene)Aktivieren / Deaktivieren des Rastersalle angezeigten Objekte neu darstellenAnzeigen <strong>eines</strong> geometrischen ObjektsEntfernen <strong>eines</strong> angezeigten ObjektsHinzufügen einer LichtquelleAnsichtstyp festlegen (mögliche Werte sind’wireframe’ und ’shaded’)Tabelle 4.3: Wichtige Befehle zur Ansichtssteuerungviewer_3d.pan(...)viewer_3d.zoom =viewer_3d.active_plane =viewer_3d.grid =viewer_3d.repaint0()viewer_3d.display_shape(...)viewer_3d.erase_shape(...)viewer_3d.add_light(...)viewer_3d.view_mode =Ein Beispiel soll <strong>den</strong> Einsatz dieser Befehle zeigen.from math import pi , sin , cosfrom gui import viewer_3dfrom OCC import BRepPrimAPIquader = BRepPrimAPI . BRepPrimAPI_MakeBox ( 3 , 4 , 5 ) . S o l i d ( )viewer_3d . display_shape ( quader )viewer_3d . view_mode = ’ shaded ’viewer_3d . zoom = 1viewer_3d . g r i d = FalseN = 4051


4.5 Dokumentefor i in range (N) :phi = i /N ∗ pi + pi /6viewer_3d . eye = [ s i n ( phi ) , cos ( phi ) , phi / 5 ]viewer_3d . zoom ∗= 1 .05Die ersten drei Zeilen dienen hier wieder dem Importieren aus vorhan<strong>den</strong>en Modulen.In der fünften Zeile wird wie im ersten Beispiel ein Quader erstellt. Dieser wirddurch <strong>den</strong> nächsten Befehl im 3D-Ansichtsbereich dargestellt. Anschließend wirdder Ansichtsmodus auf schattiert (shaded) und die Vergrößerungsstufe auf 1 gestellt.Weiters wird das Koordinatenraster deaktiviert.Der Rest des gezeigten Codes demonstriert, wie auf einfache Weise eine Kamerafahrterstellt wer<strong>den</strong> kann. Die Kamera soll sich dabei auf einer Schraublinie um die z-Achse bewegen und dabei auf das dargestellte Objekt heranzoomen. Umgesetzt wurdedie Kamerafahrt mittels einer Schleife. Die Variable i durchläuft dabei die Werte0 bis N-1. Bei jedem Schritt wird dabei der Wert phi als aktueller Kurvenparameterbestimmt und die Kameraposition entsprechend gesetzt. Der Vergrößerungsfaktorwird in jedem Schritt um 5% erhöht.(a) (b) (c)Abbildung 4.1: Drei Szenen aus der resultieren<strong>den</strong> Animation4.5 DokumenteBeim Modellieren mit einem <strong>CAD</strong>-Programm treten neben dem eigentlichen Modelloft auch andere geometrische Objekte auf, die in der 3D-Szene dargestellt wer<strong>den</strong>.Beispiele hier<strong>für</strong> sind etwa Achsenkreuze, Gitternetze oder die Konstruktionsvorschau.Diese müssen oft separat behandelt wer<strong>den</strong> und sollten etwa von Aktionenwie rückgängig Machen von Modellierschritten oder Speichern von Modellen ausgenommensein. Zu diesem Zweck wer<strong>den</strong> in Open CAS<strong>CAD</strong>E alle zu einem Modellgehören<strong>den</strong> Objekte in einem sogenannten Dokument zusammengefasst. Aktionenwie die oben genannten wirken sich dann nur auf die zum Dokument gezähltenObjekte aus.Ein Dokument ist in Open CAS<strong>CAD</strong>E baumförmig strukturiert. Jedes Objekt ineinem Dokument wird eindeutig durch eine Folge natürlicher Zahlen i<strong>den</strong>tifiziert.52


4.5 DokumenteDiese sogenannten Labels beginnen immer mit einer 0. Jedes Label kann mehreresogenannte Attribute besitzen, in <strong>den</strong>en die eigentlichen Daten, wie Geometrie,Positionierung und Farbe <strong>eines</strong> Objekts gespeichert wer<strong>den</strong> können. Beispielsweisekönnte ein einfaches Modell <strong>eines</strong> Tisches innerhalb <strong>eines</strong> Dokuments das Label0:1 besitzen und auf die Tischplatte und die Tischbeine als Unterobjekte verweisen.Diese wür<strong>den</strong> dann mit <strong>den</strong> Labels 0:1:1 bis 0:1:5 bezeichnet.Innerhalb von Kubos ist das aktuell geöffnete Dokument unter doc.doc_ctrl zu fin<strong>den</strong>.Die wichtigsten Befehle <strong>für</strong> das Arbeiten mit diesem sind in Tabelle 4.4 aufgelistet.BefehlBeschreibungdoc_ctrl.open_command() Beginnt einen neuen Befehl, welcher als ganzesrückgängig gemacht wer<strong>den</strong> kanndoc_ctrl.undo()Macht <strong>den</strong> letzten Befehl rückgängigdoc_ctrl.redo()Stellt <strong>den</strong> zuletzt rückgängig gemachten Befehlwieder herdoc_ctrl.add()Fügt ein Objekt zu dem Dokument hinzudoc_ctrl.remove() Entfernt ein Objekt aus dem Dokumentdoc_ctrl.set_color() Setzt die Farbe <strong>eines</strong> Objekts des Dokumentsdoc_ctrl.open()Öffnet eine vorhan<strong>den</strong>e Datei im STEP-Formatdoc_ctrl.save()Speichert das Dokument im STEP-FormatTabelle 4.4: Befehle zum Arbeiten mit dem geöffneten DokumentWieder soll ein Beispiel die Nutzung verdeutlichen.from doc import doc_ctrlfrom OCC import BRepPrimAPIquader = BRepPrimAPI . BRepPrimAPI_MakeBox ( 3 , 4 , 5 ) . S o l i d ( )kugel = BRepPrimAPI . BRepPrimAPI_MakeSphere ( 2 ) . S o l i d ( )with doc_ctrl . open_command ( ) :doc_ctrl . add ( quader )doc_ctrl . s e t _ c o l o r ( quader , [ 0 , 1 , 0 ] )with doc_ctrl . open_command ( ) :doc_ctrl . add ( kugel )doc_ctrl . s e t _ c o l o r ( kugel , [ 1 , 0 , 0 ] )doc_ctrl . save ( ’demo . stp ’ )Nach dem Importieren der benötigten Module wer<strong>den</strong> in dem Code ein Quader undeine Kugel erstellt. Anschließend wer<strong>den</strong> nacheinander zwei Befehle begonnen, durchdie der Quader und die Kugel zum Dokument hinzugefügt und mit einer Farbe versehenwer<strong>den</strong>. Diese Aktionen könnten durch Aufrufen von doc_ctrl.undo() wiederrückgängig gemacht wer<strong>den</strong>. Die Gruppierung unter dem Befehl open_command()bewirkt dabei, dass jeweils zwei Aktionen gleichzeitig rückgängig gemacht wür<strong>den</strong>.Das einmalige Aufrufen des Befehls würde also nicht nur die Farbe der Kugel zurücksetzen,sondern auch die Kugel wieder aus dem Dokument entfernen. Der letzte53


4.6 WerkzeugeBefehl bewirkt das Speichern des Modells unter dem Namen demo.stp. Bei diesemBefehl ist Vorsicht geboten, da eventuell existierende Dateien überschrieben wer<strong>den</strong>.4.6 WerkzeugeKubos ist so konzipiert, dass eine einfache Erweiterung möglich ist. Neue Werkzeugeund Aktionen können durch das Schreiben einfacher Skripts erstellt wer<strong>den</strong>. ImFolgen<strong>den</strong> wollen wir dies am Beispiel des Werkzeugs zum Erstellen von Streckenerläutern.Neue Werkzeuge lassen sich im Programmordner tools hinzufügen. Dies geschiehtentweder durch Ergänzungen an bestehen<strong>den</strong> Skriptdateien oder durch das Erstellenneuer Dateien. Die Werkzeuge müssen dabei als Unterklassen der Klasse Toolerstellt wer<strong>den</strong> und in der Liste am Ende des Skripts beinhaltet sein. Die Metho<strong>den</strong>__init__ und preview müssen in der Unterklasse neu implementiert wer<strong>den</strong>. EinWerkzeug <strong>für</strong> das Zeichnen von Strecken hat damit die folgende Struktur:class Segment ( Tool ) :def __init__ ( s e l f ) :. . .def preview ( s e l f , input , d i r e c t i o n ) :. . .l i s t = [ Segment ( ) ]Dabei dient die Methode __init__ dem Initialisieren des Werkzeugs, während mitpreview die Vorschau <strong>für</strong> die aktuelle Eingabe erstellt wird. Wird eine Eingabe akzeptiert,so wird die aktuelle Vorschau dem Dokument hinzugefügt. Die Variable list,die am Ende des Skripts zu fin<strong>den</strong> ist, listet alle im Skript definierten Werkzeuge auf.Damit das Modul in das Programm gela<strong>den</strong> wer<strong>den</strong> kann, ist außerdem ein Eintragin der Datei actions/modules.py notwendig. Um beim Programmstart automatischgela<strong>den</strong> zu wer<strong>den</strong>, muss am Ende der Programmhauptdatei (__main__.py) einentsprechender Befehl stehen.Wir wer<strong>den</strong> nun <strong>den</strong> Inhalt der Metho<strong>den</strong> __init__ und preview näher betrachten.def __init__ ( s e l f ) :Tool . __init__ ( s e l f )s e l f . menu = [ ’&P r i m i t i v e s ’ , ’ Se&gment ’ ]s e l f . s t e p s = 2s e l f . input_types = [ ’ point ’ , ’ point ’ ]s e l f . help = [ ’ Enter the s t a r t point ’ , ’ Enter the end point ’ ]s e l f . icon = ’ cad−segment ’s e l f . s h o r t c u t = ’ Ctrl+G’s e l f . r e s e t ( )Die Methode __init__ dient zum Initialisieren des Werkzeugs. Sie muss zumindestdie Attribute menu, steps und input_types setzen. Dabei gibt menu <strong>den</strong> Eintrag54


4.7 Programmstruktur und Überblickin der Menüzeile von Kubos an und step bestimmt die Anzahl der Schritte <strong>für</strong>die Konstruktion. Die Art der benötigten Eingabe <strong>für</strong> je<strong>den</strong> Schritt wird durch dieEinträge in input_types bestimmt, welche entweder <strong>den</strong> Wert ’point’ oder ’object’haben können. Die optionalen Attribute help, icon und shortcut bestimmen jeweils<strong>den</strong> in der Statuszeile erscheinen<strong>den</strong> Hilfetext, <strong>den</strong> Namen des Werkzeugicons unddas Tastenkürzel zum Aktivieren des Werkzeugs. Am Ende der Methode muss dasWerkzeug mit dem Befehl reset in <strong>den</strong> Anfangszustand versetzt wer<strong>den</strong>.Im Beispiel des Streckenwerkzeugs soll der Menüeintrag unter Primitives/Segmentzu fin<strong>den</strong> sein. Die unterstrichenen Buchstaben stellen dabei Tastenkürzel dar, dieüber die Platzierung des &-Zeichens festgelegt wer<strong>den</strong>. Die Konstruktion geht inzwei Schritten vor sich, wobei in bei<strong>den</strong> Schritten ein Punkt eingegeben wer<strong>den</strong> soll.def preview ( s e l f , input , d i r e c t i o n ) :i f s e l f . step == 0 :s e l f . previous_data = [ input ]return [ BRepBuilderAPI . BRepBuilderAPI_MakeVertex ( input ) . Shape ( ) ]e l i f s e l f . step == 1 :point0 = s e l f . previous_data [ 0 ]i f point0 == input :raise I n v a l i d I nputExceptiona = GC. GC_MakeSegment( input , point0 ) . Value ( )s e l f . f i n a l = [ BRepBuilderAPI . BRepBuilderAPI_MakeEdge ( a ) . Shape ( ) ]return s e l f . f i n a lDie Funktion preview unterscheidet anhand der Variablen step, in welchem der bei<strong>den</strong>Schritte zur Eingabe sich das Programm befindet. Beim ersten Schritt wirdeine aus dem ersten Eingabepunkt erstellte Ecke als Vorschauobjekt zurückgegeben.Weiters wird der Eingabepunkt in previous_data zur späteren Verwendung abgespeichert.Beim zweiten Schritt wird der zuvor eingegebene Punkt wieder abgerufen.Ist dieser mit dem neuen Eingabepunkt i<strong>den</strong>tisch, so kann aus der Eingabe keineStrecke erstellt wer<strong>den</strong>. Der Befehl raise InvalidInputException bewirkt, dass dieEingabe vom Programm als unzulässig erkannt und nicht akzeptiert wird. Wur<strong>den</strong>zwei verschie<strong>den</strong>e Punkte eingegeben, so wird eine Strecke erstellt und als Vorschauzurückgegeben. Zuvor wird sie allerdings noch unter der Bezeichnung final abgespeichert.Das hier abgespeicherte Objekt wird abgerufen, wenn die letzte Eingabeakzeptiert wurde. Es ist meistens i<strong>den</strong>tisch mit der letzten Vorschau, dies ist abernicht immer der Fall, da die Vorschau oft auch weitere Konstruktionsobjekte beinhaltenkann.4.7 Programmstruktur und ÜberblickAbschließend soll hier ein Überblick über die Struktur des entstan<strong>den</strong>en Programmsgeboten wer<strong>den</strong>. Einige der hier beschriebenen Komponenten wur<strong>den</strong> dabei bereitszuvor in diesem Kapitel behandelt.55


4.7 Programmstruktur und ÜberblickDatei / Ordner__main__.pydoc.pydata.pygui.pyactive_tool.pytools/actions/lib/BeschreibungHauptskriptaktives Dokumentprogrammweite DatenElemente der grafischen Oberflächeaktives Werkzeugverfügbare Werkzeugeallgemeine vom Benutzer setzbare AktionenAnpassungen und Ergänzungen der verwendeten BibliothekenTabelle 4.5: ProgrammstrukturDie Datei __main__.py stellt das Hauptsktipt dar, welches zum Starten von Kubosausgeführt wird und die grafische Oberfläche sowie die benötigten Module lädt. Mithilfevon doc.py kann auf das aktuell geöffnete Dokument zugegriffen wer<strong>den</strong>, wasin Abschnitt 4.5 beschrieben wurde. Das Modul data.py enthält programmweite Daten,wie <strong>den</strong> Dateinamen oder die aktuelle Eingabe. Weiters stellt gui.py die gesamtegrafische Benutzeroberfläche bereit, wozu insbesondere auch der in Abschnitt 4.4 behandelte3D-Ansichtsbereich (viewer_3d) gehört. Sämtliche Werkzeuge zum Erstellenund Ändern geometrischer Objekte fin<strong>den</strong> sich im Ordner tools. Neue Werkzeugekönnen dabei wie in Abschnitt 4.6 beschrieben erstellt wer<strong>den</strong>, wobei diese auf dieModellierfunktionen aus Abschnitt 4.3 zugreifen. Analog zu Werkzeugen kann dasProgramm auch um andere Aktionen erweitert wer<strong>den</strong>, welche im Ordner actionszu fin<strong>den</strong> sind. Diese können beispielsweise die Ansichtssteuereung oder das Öffnenund Speichern von Dateien betreffen. Schließlich enthält der Ordner lib hauptsächlichangepasste und ergänzte Komponenten der bei<strong>den</strong> verwendeten Bibliotheken Qtund OCC.56


5 SchlussbemerkungenIm Rahmen dieser Arbeit wurde mit Kubos ein neues <strong>CAD</strong>-Programm entwickelt,wobei das Ziel verfolgt wurde, einen sinnvollen Einsatz im Geometrieunterricht zuermöglichen. Abschließend stellt sich damit natürlich die Frage, inwieweit dieses Zielerreicht wurde und inwiefern sich Kubos diesbezüglich von anderen im Geometrieunterrichtgebräuchlichen Programmen unterscheidet.Zum einen ist hier die exakte Repräsentation von Modellen in Kubos zu nennen. Diesestellt einen wesentlichen Unterschied zu Programmen wie <strong>CAD</strong>-3D und Sketch-Up dar, in welchen gekrümmte Kurven und Flächen nur approximativ beschriebenwer<strong>den</strong>, und ermöglicht damit ein genaues Konstruieren. Eine weitere Besonderheitvon Kubos ist dessen einfache Benutzeroberfläche. Es orientiert sich damit anSketchUp und steht im Kontrast zu GAM und MicroStation, welche eine große Füllevon Werkzeugen bereitstellen. Einerseits aufgrund dieser Ausrichtung, andererseitsaufgrund des frühen <strong>Entwicklung</strong>sstadiums, verfügt Kubos verglichen mit anderenProgrammen über einen reduzierten Funktionsumfang. Wesentliche Teile, wie einWerkzeug zum Erstellen von Streckenzügen oder Benutzerkoordinatensysteme, fehlennoch. Jedoch können derartige Werkzeuge durch die Erweiterbarkeit von Kubosdem Programm mit relativ geringem Aufwand hinzugefügt wer<strong>den</strong>. Ein wesentlicherMotivationsgrund <strong>für</strong> die <strong>Entwicklung</strong> von Kubos war auch, ein Softwarepaket zurVerfügung zu stellen, welches kostenloses ist. Dadurch soll <strong>den</strong> Schülern auch nachnach Abschluss des Geometrieunterrichts ein weiteres Verwen<strong>den</strong> des <strong>CAD</strong>-<strong>Systems</strong>möglich sein. Es wird damit der oft zitierten Forderung nachgekommen, dass Schülernicht <strong>für</strong> die Schule, sondern <strong>für</strong> das Leben lernen sollen: „Non scholae, sed vitaediscimus“.57


Schlussbemerkungen58


Literaturverzeichnis[BX92][Far94][Hav05][Hof92][PAHK10]Chandrajit L. Bajaj and Gualiang Xu. Nurbs approximation of surface/-surface intersection curves. Technical report, Department of ComputerScience, Purdue University, 1992.Gerald Farin. Kurven und Flächen im Computer Aided Geometric Design.vieweg, 1994, http://www.worldcat.org/oclc/315749265.Sven Havemann. Generative Mesh Modeling. PhD thesis, Carl-Friedrich-Gauß-Fakultät <strong>für</strong> Mathematik und Informatik, Technische UniversitätBraunschweig, 2005.Christoph M. Hoffmann. Geometric and Solid Modeling. 1992, http://www.cs.purdue.edu/homes/cmh/distribution/books/geo.html.Helmut Pottmann, Andreas Asperl, Michael Hofer, and Axel Kilian.Architekturgeometrie. SpringerWienNewYork, 2010.[PMKM93] N. M. Patrikalakis, T. Maekawa, K. H. Ko, and H. Mukundan. Surfaceto surface intersections. Computer Graphics and Applications, IEEE,13: 89 – 95, 1993, http://www.cadanda.com/v1nos1to4_51.pdf.[PRS02][PT96][RT78]Markus Pfeifer, Wolfgang Rath, and Hellmuth Stachel. Handbuch zu<strong>CAD</strong>-3D <strong>für</strong> Windows, 2002.Les Piegl and Wayne Tiller. The NURBS Book. Springer, 2nd edition,1996.Aristides A. Requicha and R. B. Tilove. Mathematical foundations ofconstructive solid geometry: General topology of closed regular sets.1978.[RV84] Aristides A. Requicha and Herbert B. Voelcker. Booleanoperations in solid modelling: Boundary evaluation and mergingalgorithms. 1984, https://urresearch.rochester.edu/fileDownloadForInstitutionalItem.action?itemId=990&itemFileId=1173.[Sei93][Str06]Hans-Peter Seidel. An introduction to polar forms. Computer Graphicsand Applications, IEEE, 13: 38 – 46, 1993, http://www.cs.uiuc.edu/class/sp06/cs419/polarforms.pdf.Ian Stroud. Boundary Representation Modelling Techniques. Springer-Verlag London Limited, 8th edition, 2006, http://www.worldcat.org/oclc/315749265.59


Literaturverzeichnis[Sum10]Mark Summerfield. Rapid GUI Programming with Python and Qt. PrenticeHall, 2010, http://www.qtrac.eu/pyqtbook.html.60

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!