Software zur räumlichen Visualisierung geometrischer Objekte im
Transcription
Software zur räumlichen Visualisierung geometrischer Objekte im
WINCKELMANN-Gymnasium Stadtseeallee 51/53 39576 Stendal Software zur räumlichen Visualisierung geometrischer Objekte im Schulunterricht Ronny und Steffen Harbich 1. EINLEITUNG 2 2. GEOMETRIESOFTWARE FÜR DIE SCHULE 2 2.1 Verfügbare Geometriesoftware 2 2.2 Erwartungen an Geometriesoftware für die Schule 2 2.3 Defizite konventioneller Geometriesoftware für räumliche Darstellungen 3 3. ALTERNATIVE GEOMETRIESOFTWARE FÜR DARSTELLUNGEN GEOMETRISCHER OBJEKTE IM RAUM 3 Konzept 3 3.1 Realisierung 3.2 3.2.1 Programmmodell Benutzerschnittstelle 3.2.2 3.2.2.1 Sprachinteroperabilität 3.2.2.2 Aufbau 3.2.2.3 Hilfesystem Engine 3.2.3 3.2.3.1 Grafikkartenschnittstelle 3.2.3.2 Implementierung in die Benutzerschnittstelle 3.2.3.3 Klassen der geometrischen Objekte 3.2.3.4 XML-Implementierung 3.2.3.5 Matrizen für die Szene 3.2.3.6 Geometriedaten von Körpern 3.2.3.7 Selektierung geometrischer Objekten 3.2.3.8 Techniken für Darstellungsverbesserungen 3.2.3.9 Erweiterbarkeit 4 4 4 4 4 5 6 6 6 6 7 7 8 9 11 12 4. BEDIENUNG 12 5. ZUSAMMENFASSUNG 13 6. DISKUSSION 13 7. DANKSAGUNG 14 8. QUELLENVERWEIS 14 Ronny und Steffen Harbich 2 1. Einleitung Nach der erfolgreichen Teilnahme beim Wettbewerb „Jugend forscht“ im letzten Jahr haben wir uns entschieden, den diesjährigen Wettbewerbsaufruf wahrzunehmen. Gemeinsam als Brüder arbeiteten wir an unserem Projekt getreu nach einem Zitat von Georg Christoph Lichtenberg: „Was man sich selbst erfinden muss, lässt im Verstand die Bahn zurück, die auch bei anderer Gelegenheit gebraucht werden kann.“ (/1/, Seite 208) Unser Anliegen bei dieser Arbeit besteht in der Verbesserung der informationstechnologischen Mittel des Mathematikunterrichts an der gymnasialen Oberstufe. Denn wie so oft ergab sich aus einem Problem, das im Folgenden näher dargelegt werden soll, ein Lösungsvorschlag. Es war in den Sommerferien des Jahres 2003 als ich, der ältere Bruder, einen Vortrag über elementare Vektorrechnung für den Mathematikleistungskurs 13 ausarbeitete. Dieser sollte nicht mit den sonst üblichen Hilfsmitteln Kreide und Folie ausgeführt werden, sondern mit den neuen Computern unseres Gymnasiums. Schon bald nach Beginn musste ich feststellen, dass sich die Erstellung komplexer dreidimensionaler Zeichnungen als recht schwierig erwies. Da diese Abbildungen aber für einen solchen Vortrag unerlässlich sind, überlegten mein Bruder und ich gemeinsam, wie man dieses Problem lösen könnte. Nachdem wir dann einige Grafikprogramme ausprobiert hatten, und sich keines als wirklich gut beurteilen lies, suchten wir nach einem eigenen Weg. Da wir beide leidenschaftliche Programmierer sind, lag die Lösung des Problems sofort auf der Hand: Ein mit Hilfe einer 3D-Schnittstelle erstelltes Programm musste her. So begannen wir mit der Entwicklung eines provisorischen Programms zur Darstellung von Vektoren als dreidimensionale Pfeile in Form eines mit einem Zylinder verbundenen Kegels. Bald darauf hielt ich erfolgreich den Vortrag mit den vom Programm erstellten Zeichnungen vor dem Mathematikleistungskurs und schon kurz danach verlangte die Fachlehrerschaft nach einem leicht zu bedienenden Programm zur Erzeugung solcher Grafiken. Als wir kundgeben mussten, dass es ein Programm dieser Art nicht gäbe, überlegten wir uns, wie man aus dem provisorischen Programm eine möglichst benutzerfreundliche Anwendung entwickeln könnte. Und genau diese Überlegung ist der Ansatz dieser „Jugend forscht“-Arbeit, ein Lösungsvorschlag zum Kreieren geometrischer und analytischen Abbildungen. 2. Geometriesoftware für die Schule 2.1 Verfügbare Geometriesoftware Zurzeit werden hauptsächlich Programme, wie EUKLID DynaGeo und Cabri-géomètre II zur Erstellung zweidimensionaler Zeichnungen genutzt. Diese können nicht nur Illustrationen erzeugen, sondern auch diverse Berechnungen durchführen. Als Beispiel hierfür soll an dieser Stelle der Schnittpunkt zweier Geraden genannt sein. Die Geometrieanwendungen sind schon heute ein wichtiger Bestandteil in einem modernen Mathematikunterricht und werden in Zukunft wohl an Bedeutung zunehmen. Dies ist durch die Tatsache begründet, dass mit solchen Anwendungen der Mathematikunterricht für die Schüler leichter und verständlicher wird. Es befinden sich neben den bereits genannten in der Ebene agierenden Geometrieprogramme auch Anwendungen für das Erstellen von Abbildungen dreidimensionale Objekte auf dem Markt. Diese sind aber keine speziell für den Mathematikunterricht an einem Gymnasium angepassten Programme, sondern vielmehr Anwendungen, die für das professionelle Erstellen von räumlichen Figuren geeignet sind. So werden Programme wie, discreet 3ds Max, Alias Maya, Maxon Cinema 4D und chUmbaLum sOft MilkShape 3D oft im Bereich Spieleprogrammierung eingesetzt. Weiterhin werden auch so genannte „Raytracing“-Programme zum kreieren scheinbar realer Szenen verwendet. 2.2 Erwartungen an Geometriesoftware für die Schule Ein Geometrieprogramm zur Darstellung geometrischer Objekte sollte nach den Erwartungen von Lehrern an einer Schule so einfach und intuitiv wie möglich gestaltet sein. So können Lehrer aber besonders auch Schüler diese Anwendungen benutzen, ohne sich auf ein kompliziertes Anfertigen von Abbildungen konzentrieren zu müssen. Als Beispiel hierfür sei das Erstellen von Grafiken während des Unterrichts genannt. So könnten ein Pädagoge und seine Schüler im Laufe der Lehrstunde spontan, ohne großen zeitlichen Verlust den entsprechenden Unterrichtsinhalt visualisieren. Außerdem könnten mit speziell für die Schule angepassten Geometrieprogrammen nicht nur kostenverursachende Schulungen und aufwendige Handbücher vermieden werden, sondern auch eine Alternative zu den sonst üblichen außerordentlich teuren Anwendungen geschaffen werden. Trotz der genannten Erwartungen sollte eine Geometriesoftware einen entsprechend ausreichenden Funktionsumfang bieten können. Ronny und Steffen Harbich 2.3 3 Defizite konventioneller Geometriesoftware für räumliche Darstellungen Bis auf die oben erwähnten in der Ebene arbeitenden Geometrieanwendungen können weder „Raytracing“-Programme, noch sonst vorhandene Software zum Erstellen dreidimensionaler Darstellungen die Forderungen nach einfacher lehrer- und schülerfreundlicher Bedienung erfüllen. An dieser Stelle soll anhand von discreet gmax exemplarisch gezeigt werden, dass die Bedienung selbst bei einer der einfacheren Anwendung besonders für Schüler unterer Klassenstufen schwer sein dürfte. In Abbildung 2-1 ist die Benutzeroberfläche der zuvor genannten Software dargestellt. Schon nach einer kurzen Betrachtung wird deutlich, dass die Anordnung der vielen Funktionselemente zu einer vorübergehenden Verwirrung führen kann und somit die Bedienung kompliziert sein dürfte. Im Einzelnen ist hier die große Anzahl von durch Menüs dargestellten Funktionen zu nennen, welche für diese Anwendung notwendig sind aber für einen ungeübten Benutzer große Schwierigkeiten bedeuten könnten. Weiterhin dürfte für einen Anwender die Tatsache, dass die meisten Programme wie gmax nur über eine englischsprachige Benutzeroberfläche verfügen, zusätzlich erschwerend sein. Abbildung 2-1: Komplexe Benutzeroberfläche von discreet gmax 3. Alternative Geometriesoftware für Darstellungen geometrischer Objekte im Raum 3.1 Konzept Um die neuartige Geometriesoftware zu realisieren, wurde auf ein sich in der Praxis bewehrtes System zur Erstellung von im dreidimensionalen Raum arbeitenden Anwendungen zurückgegriffen. Diese Methode besteht im Grunde darin, dass ein von der eigentlichen Software unabhängiger Kern, die so genannte Engine, und eine Benutzerschnittstelle entwickelt werden. So ist es dann möglich, die beiden Teilkomponenten gemäß dem Prinzip der Arbeitsteilung parallel zu erstellen und somit viel Zeit gegenüber linearer Evolution von Anwendungen einzusparen. Weiterhin kann eine Engine, was allerdings für die alternative Geometriesoftware nicht von Bedeutung ist, für andere im dreidimensionalen Raum arbeitenden Programme aufgrund der bereits erwähnten Ungebundenheit, verwendet werden. Es wurde sich bei der neuartigen Geometriesoftware nicht für eine direkte Anpassung und Einbindung entschieden, da die sonst oben genannten Vorteile nicht unterstützt worden wären. Ronny und Steffen Harbich 3.2 4 Realisierung 3.2.1 Programmmodell Die alternative Geometriesoftware wurde im Grunde nach dem in der Abbildung 3-1 dargestelltem in abstracto existierenden Modell entwickelt. Dieses beschreibt im Wesentlichen die Schritte, die von Benutzereingabe bis zur Programmausgabe vollführt werden. Zu beginn muss der Anwender mit Hilfe der Benutzerschnittstelle Angaben über die zu erstellenden geometrischen Objekten machen (1). Als nächstes konvertiert die Benutzerschnittstelle die gesammelten Informationen so um (2), dass schließlich die Engine die Daten für Direct3D Graphics bereitstellen kann (3). Im weiteren Verlauf errechnet die Microsoft DirectX 9.0b Komponente Direct3D Graphics die Szene, die die von Benutzer gewünschten geometrischen Objekte beinhaltet (4). Dann stellt die Hardware des Computers diese Szene mit Hilfe der Benutzerschnittstelle dar (5) und der Anwender erhält somit die Programmausgabe (6): ein Raum mit geometrischen Objekten. Abbildung 3-1: Grafische Darstellung des Programmmodells 3.2.2 Benutzerschnittstelle 3.2.2.1 Sprachinteroperabilität Die Benutzerschnittstelle der neuartigen Geometriesoftware wurde mit der objektorientierten Programmiersprache Microsoft Visual Basic .NET 2003 entwickelt. Die Wahl dieser Sprache begründet sich mit der Sprachinteroperabilität (/3/), also der Fähigkeit einer Programmiersprache den Programmcode von anderen Programmiersprachen zu nutzen. Dass diese von großer Wichtigkeit ist, zeigt sich bei der Interaktion der Benutzerschnittstelle mit der in Microsoft Visual C# .NET 2003 programmierten Engine. Die Benutzerschnittstelle und die Engine wurden nicht in einer gemeinsamen Sprache erstellt, da beide Entwickler unterschiedliche Programmiersprache benutzen und es dank der Sprachinteroperabilität der .NET Common Language Runtime zu keinerlei Interaktionsschwierigkeiten kommt. 3.2.2.2 Aufbau An dieser Stelle soll nun der Aufbau der Benutzerschnittstelle näher erläutert werden. Zunächst einmal wurde oben, wie in Abbildung 3-2 erkennbar eine Menüleiste (/4/) erstellt. Diese ermöglicht es dem Benutzer auf alle Funktionen, außer dem Bearbeiten der einzelnen geometrischen Objekte zuzugreifen. Unter der Menüleiste befindet sich die so genannte Werkzeugleiste (/5/), welche die wichtigsten Funktionen mit Hilfe kleiner bildhafter Symbole bereitstellt. In der Mitte ist ein TabseitenSteuerelement (/6/) erzeugt worden, das drei verschiedenartige Tabseiten (/7/) enthalten kann: eine Startseite, eine oder mehrere Hilfeseiten und Seiten in denen die geometrischen Objekte dargestellt werden. Unter dem Tabseiten-Steuerelement wurde eine Statusleiste (/8/), die kleinere Hilfen und Informationen anzeigen kann verankert. Um die Benutzeroberfläche für den Anwender einfach zu Ronny und Steffen Harbich 5 halten, wurden die Menüeinträge und die Einträge in der Werkzeugleiste dynamisch gestaltet. Das heißt sie passen sich der aktuell vom Benutzer ausgewählten Tabseite so an, dass nur noch die für die jeweilige Seitenart notwendigen Funktionen sichtbar sind. Natürlich gibt es neben den dynamischen auch statische Einträge. Aufgrund der Verwendung des Tabseitensystems ist es leicht möglich weitere Seitenarten zu implementieren und somit das Programm zu erweitern. Die in der Abbildung 3-2 ausgewählte Tabseitenart in der geometrische Objekte angezeigt werden ist die Verbindung zwischen Benutzerschnittstelle und Engine. Dort zeichnen die von der Benutzerschnittstelle aufgerufenen Funktionen der Engine den mit geometrischen Objekten gefüllten Raum. Damit der Anwender der neuartigen Geometriesoftware die Objekte möglichst einfach bearbeiten kann, wurde rechts neben dem eigentlichen Darstellungsbereich ein Eigenschaftauflistungs-Steuerlement (/9/) hinzugefügt. Über dieses kann der Benutzer die Eigenschaften der einzelnen geometrischen Objekte direkt manipulieren. Um auch hier die Benutzerfreundlichkeit zu wahren wird zu jedem vom Benutzer ausgewählten Eigenschaftseintrag eine kurze Beschreibung angezeigt. Weiterhin sind für viele Einträge kleine Benutzeroberfläche erstellt worden, so dass der Anwender auch komplexe Eigenschaften einfach verändern kann. Das EigenschaftauflistungsSteuerlement erstellt die Eigenschaftseinträge mit Hilfe das so genannte System der Reflektion (/10/). Mit diesem System können Informationen, wie Namen und Attribute (/11/) von Klassen, Methoden und so weiter während der Laufzeit erhalten werden. So wurden den Klassen, die die geometrischen Objekte repräsentieren Attribute, also zusätzliche Informationen zugewiesen und über eben diese ist es dem Eigenschaftauflistungs-Steuerlement möglich Einträge zu erstellen und entsprechend auf Benutzereingaben zu reagieren. Durch das System der Reflektion ist es weiterhin jeder Zeit möglich neue geometrische Objekte und Eigenschaften in die Anwendung zu implementieren. Abbildung 3-2: Benutzerschnittstelle der neuartigen Geometriesoftware 3.2.2.3 Hilfesystem Das Hilfesystem der Geometriesoftware ist eines der wesentlichen Bestandteile, das die Benutzerfreundlichkeit erhöht. So besteht das System in globo aus den folgenden drei Komponenten: Die bereits oben erwähnte Hilfe bei der Auswahl eines Eintrages in dem EigenschaftauflistungsSteuerlement, die Hinweise die in der Statusleiste angezeigt werden und die die Hilfe-Tabseite. Um ein besonders hohes maß an Bedienkomfort zu erreichen, werden bei der Erstellung von geometrischen Objekten durch den Anwender die jeweiligen Arbeitsschritte in der Statusleiste angezeigt. Die Hilfe beim Eigenschaftauflistungs-Steuerlement und bei der Statusleiste sind im Gegensatz zur Hilfe-Tabseite nur eine Art Kurzhilfe, denn bei der Hilfe-Tabseite findet der Anwender eine ausführliche Referenz und ausführliche Beispiele vor. In die Hilfe-Tabseite wurde solch ein Ronny und Steffen Harbich 6 HTML-Steuerlement eingebettet, wie es auch beim Microsoft Internet Explorer 6 verwendet wird. Mit diesem ist es dann möglich die HTML-Seiten der Hilfe zu visualisieren. Damit der Anwender nicht immer erst eine ausführliche Hilfe zu einem geometrischen Objekt oder zu einer Eigenschaft suchen muss, ist es möglich die kontextbezogene Hilfe direkt über einen Tastendruck aufzurufen. 3.2.3 Engine 3.2.3.1 Grafikkartenschnittstelle Die mit Microsoft Visual C# .NET 2003 entwickelte Engine verwendet die Grafikkartenschnittstelle Direct3D Graphics von Microsoft Managed DirectX 9.0b (/12/). Mit Hilfe von Direct3D Graphics ist es der Engine möglich Objekte in einem dreidimensionalen Raum zu manipulieren und darzustellen. Weiterhin lässt die Schnittstelle eine maximale Hardwarebeschleunigung bei höchster Kompatibilität zu. Somit sollte die neuartige Geometriesoftware dank Direct3D Graphics auf vielen Personalcomputern funktionieren. Es existiert neben der genannten Grafikkartenschnittstelle auch noch eine weitere Namens OpenGL, jedoch kam diese aufgrund des Fehlens einer Klassenstruktur in der API und der unzureichenden Unterstützung der .NET Common Language Runtime nicht in Frage. 3.2.3.2 Implementierung in die Benutzerschnittstelle Die Engine stellt der Benutzerschnittstelle, wie in Abbildung 3-3 erkennbar ein Steuerelement, das den Namen RenderPanel trägt, zur Verfügung. Dieses erbt von der .NET Klasse UserControl (/13/) und erfüllt somit die übliche .NET Spezifikation. Solange der Benutzer geometrische Objekte erstellt oder bearbeitet befindet sich das RenderPanel im Fenstermodus. Als Fenstermodus wird der Zustand bezeichnet, bei dem der mit geometrischen Objekten gefüllte Raum in einem Programmfenster angezeigt wird. Abbildung 3-3: Direct3D Graphics Implementierung Im Gegensatz dazu steht der Vollbildmodus, bei welchem der gesamte Bildschirm die Szene darstellt. Der qualitativ bessere Vollbildmodus ist zu Präsentationszwecken gedacht und kann jederzeit über die Benutzerschnittstelle aufgerufen werden. 3.2.3.3 Klassen der geometrischen Objekte Im weiteren Verlauf soll die Organisierung der geometrischen Objekte zu einer Klassenstruktur, wie in Abbildung 3-4 dargestellt, erläutert werden. Zunächst einmal wurde die abstrakte Basisklasse RenderObject erstellt. In dieser sind alle diejenigen Eigenschaften und Funktionen vorhanden, die jedes in der Szene darstellbare Objekt durch Vererbung besitzen muss. Beispiele für gemeinsame Eigenschaften der Objekte sind Farbe, Sichtbarkeit und so weiter und Beispiele für gemeinsame Funktionen sind das Schreiben und Lesen von XML-Daten. Die darstellbaren Objekte werden in Abbildung 3-4 von links nach rechts in folgende Gruppen eingeteilt: Zuerst sind die Klassen der zweidimensionalen, dann die der dreidimensionalen geometrischen Objekte erkennbar und anschließend die Klassen für die Beschriftung. Jede von RenderObject abgeleitete Klasse hat eine so genannte „has a“-Beziehung zu der Punkt-Klasse, da jedes darstellbare Objekt mindestens einen Punkt aufweisen muss. Als Besonderheit der Vererbungshierarchie der zweidimensionalen geometrischen Objekte ist zu bemerken, dass die Ellipse-Klasse und die Circle-Klasse von der PolygonBase-Klasse abgeleitet wird. Dies ist damit zu begründen, dass eine Ellipse beziehungsweise ein Kreis in der euklidischen Geometrie ein Polygon mit unendlich vielen Ecken ist. Allerdings lässt sich dies vom Computer nicht realisieren, indes nutzt er eine hohe Anzahl von Ecken, um scheinbar reale Ellipsen und Kreise darzustellen. Analog dazu sind auch bei den dreidimensionalen geometrischen Objekten Besonderheiten vorhanden: So wird der Kegelstumpf vom Pyramidenstumpf und der Zylinder vom Prisma abgeleitet, da die Grundflächen dieser Objekte jeweils den oben genannten Sachverhalt entsprechen. Weiterhin erben die Pyramide vom Pyramidenstumpf und der Kegel vom Kegelstumpf aufgrund der Tatsache, dass die Nicht-Stümpfe ein Spezialfall der Stümpfe in der Hinsicht werden, dass die Flächeninhalte der Deckflächen null und somit jeweils nur noch ein Punkt sind. Als dritte und letzte Gruppe werden die Klassen für Beschriftung näher erläutert. Die beiden Klassen Text2D und Text3D sind von der Klasse TextBase abgeleitet und sind für die Darstellung von zweidimensionalen beziehungsweise dreidimensionalen Text verantwortlich. Die Basisklasse enthält einige Eigenschaften wie Schriftart, Schriftgröße und so weiter. Außerdem beinhaltet die Gruppe die Image-Klasse, mit der Bilder unter Verwendung der Billboarding-Technik dargestellt werden können. Der Benutzer erhält somit die Möglichkeit eigene Grafiken, die er Ronny und Steffen Harbich 7 beispielsweise mit mathematischen Formeln oder Sonderzeichen füllen kann, einzubinden. Unter dem Namen „Styles for points“ befinden sich weitere Klassen, die nicht von RenderObject erben, jedoch auch mit den geometrischen Objekten in Verbindung stehen: Sie definieren die Visualisierung eines einzelnen Punktes. Durch die Verwendung einer Schnittstelle Namens IPointStyle lässt sich die Vielfalt der verschiedenen Darstellungsmöglichkeiten leicht variieren und erweitern. Abbildung 3-4: Vererbungshierarchie der Klassen der geometrischen Objekte 3.2.3.4 XML-Implementierung Neben den Eigenschaften zur Darstellung eines geometrischen Objekts enthält jede von RenderObject abgeleitete Klasse auch Funktionen, die das Speichern und Laden eines geometrischen Objektes ermöglichen. Um eine gesamte Szene in eine Datei abzuspeichern, ruft die Engine die Speichern-Funktion von jedem einzelnen geometrischen Objekt auf. Der Vorgang des Ladens und Speicherns erfolgt mit Hilfe der Extensible Markup Language, kurz XML (/14/). Die Verwendung dieser Markierungssprache begründet sich in der guten Lesbarkeit des abgespeicherten Dokuments, in der sehr einfachen Erweiterbarkeit sowie in Abwärtskompatibilität. Die Abbildung 3-5 zeigt eine in XML abgespeicherte Szene in der eine Linie vorhanden ist. <?xml version="1.0" encoding="utf-16"?> <VectorRender> <Light /> <Camera rotx="0" roty="1,57"> <Point x="3" y="3" z="10" /> </Camera> <Objects> <Line color="-16711681" locked="False" visible="True" ptcount="2"> <Style type="PointStyleCube" edgelength="0,1" /> <Point x="0" y="0" z="0" /> <Point x="10" y="0" z="0" /> </Line> </Objects> </VectorRender> Abbildung 3-5: Beispiel einer XML-Datei 3.2.3.5 Matrizen für die Szene Ronny und Steffen Harbich 8 Ein weiterer wichtiger Bestandteil der Engine ist die hauptsächlich Vektoren und Matrizen umfassende Mathematik. So wird die Szene durch Direct3D Graphics folgendermaßen berechnet: Um die dreidimensionalen Daten der geometrischen Objekte der Szene in ein zweidimensionales Bild auf dem Bildschirm umzuwandeln, also sie zu transformieren, verwendet Direct3D Graphics 4x4 Matrizen nach folgender Formel: [x y z 1] = [ x y z 1] M = [ x y z 1] M11 M 21 M 31 M 41 M12 M 22 M 32 M 42 M13 M 23 M 33 M 43 M14 M 24 M 34 M 44 Aus der Vereinfachung der Matrixmultiplikation, ergibt sich die folgende Komponentenschreibweise: x = ( x M11 ) + ( y M 21 ) + ( z M 31 ) + (1 M 41 ) y = ( x M12 ) + ( y M 22 ) + ( z M 32 ) + (1 M 42 ) z = ( x M13 ) + ( y M 23 ) + ( z M 33 ) + (1 M 43 ) Wird nun für die Matrix M das Produkt aus der world matrix, der view matrix und der projection [ x y z ] die Geometriedaten der Szene eingesetzt, ergibt sich der matrix und für den Punkt transformierte Punkt [x y z ] , bei dem die Koordinaten x und y den resultierenden Punkt auf dem Bildschirm darstellen (/15/). Ohne auf weitere Details einzugehen, ist die world matrix für Translation, Rotation und Skalierung, die view matrix für die Position und Richtung des Betrachters und die projection matrix für die perspektivische Darstellung verantwortlich. Außerdem kann mit Hilfe der projection matrix festgelegt werden, ob das kartesisches Koordinatensystem ein rechts- oder linkshändiges ist. Nach der Berechnung der Position auf dem Bildschirm erfolgen weitere Operationen, die die Farbewerte des Pixels bestimmen, auf die aber im Nachkommenden nicht näher eingegangen werden kann. 3.2.3.6 Geometriedaten von Körpern Als nächstes soll die Berechnung der Geometriedaten anhand des Beispiels Kugel dargelegt werden. Hierzu muss jedoch vorab geklärt sein, dass Geometriedaten Informationen sind, die Direct3D Graphics benötigt, um primitive Objekte wie Dreiecke, Linien oder Punkte, welche die Grundelemente einer Szene sind, darzustellen. Direct3D Graphics ist ausschließlich in der Lage primitive Objekte (/16/) anzuzeigen und somit muss jedes geometrische Objekt aus diesen primitiven Objekten aufgebaut werden. Ein kugelähnlichen Körper, welcher ein solches geometrisches Objekt ist, wird, wie in Abbildung 3-6 durch Blau und Grün gekennzeichnet, in immer kleiner werdende parallele horizontale regelmäßige Polygone und in gleich groß bleibende vertikale regelmäßige Polygone eingeteilt. Dieses System ist im Wesentlichen mit den Breiten- und Längengraden der Erde vergleichbar. Die vier Schnittpunkte zweier Abbildung 3-6: Kugelähnlicher Körper mit dreieckigen nebeneinander liegender horizontaler und Flächen vertikaler Polygone bilden ein Viereck, das in zwei Dreiecke unterteilt wird. Nach der Einteilung kann dieses geometrische Objekt nicht mehr als Kugel bezeichnet werden, de facto ist aufgrund der Dreiecksflächen ein kugelähnlicher Körper entstanden. Um dennoch eine scheinbar reale Kugel in der Szene darzustellen, wird die Anzahl der horizontalen und vertikalen Polygone einfach erhöht, sodass die entstehenden Dreiecksflächen sehr klein sind. Die eigentliche Berechnung der Punkte des kugelähnlichen Körpers wird durch die folgenden Gleichungen beschrieben: Ronny und Steffen Harbich (3.1) i = 9 i nh ri = cos ( 2 ) hi = sin ( i ) (3.2) (3.3) (3.4) k 2 = k nv k yi ,k = hi (3.6) zi ,k = sin ( (3.7) ) - Anzahl der horizontalen Kreise • • • i - Winkel zur Berechnung von k und hi - Winkel zur • rK ri • k ) 0 i nh k - Anzahl der vertikalen Kreise - aktueller horizontaler Kreis - aktueller vertikalen Kreis Berechnung ri der Koordinaten xi ,k , zi ,k ri ri - Radius für den i -ten horizontalen • hi Kreis - Höhe für den i -ten horizontalen • xi ,k , yi ,k , zi ,k - Punktkoordinaten für i, k • i - Radius der Kugel nh nv i k • rK i xi ,k = cos ( (3.5) Legende: rk • 0 k nv Kreis Zu beginn wird der Radius ri eines i -ten horizontalen Polygons berechnet. Hierzu muss der Winkel i , wie in y Gleichung (3.1) angegeben, bestimmt und anschließend in die trigonometrischen Gleichungen (3.2) und (3.3) eingesetzt werden. Die Abbildung 3-7 soll dies verdeutlichen. Weiterhin können die Koordinaten xi ,k ri rK hi = yi ,k i ri x und zi ,k über die Winkelfunktionen Sinus und Kosinus, wie in Abbildung 3-8 dargestellt, über die Gleichungen (3.5) und (3.7) errechnet werden. Die fehlende Koordinate yi ,k entspricht der Höhe hi . z Abbildung 3-7: Horizontales Polygon mit Umkreis k y x ri ( xi,k ; zi,k ) z Abbildung 3-8: Draufsicht eines horizontalen Polygons 3.2.3.7 Selektierung geometrischer Objekten Die Benutzerschnittstelle bietet dem Anwender die Möglichkeit geometrische Objekte zu selektieren. Damit dies so einfach wie möglich umgesetzt werden kann, stellt die Engine eine solche Funktion zur Verfügung. Selektion heißt, dass der Benutzer mit der Maus auf das Szenen darstellende Steuerelement klickt und dabei auf ein geometrisches Objekt zeigt. Um eine Selektion zu realisieren, Ronny und Steffen Harbich 10 muss die Engine jedes geometrische Objekt in der Szene auf einen Schnitt mit einem Strahl überprüfen. Dieser Strahl ist durch die Kameraposition und einer Richtung definiert, die sich aus der aktuellen Mausposition berechnet. Das Zustandekommen der Richtung kann an dieser Stelle nicht in extenso beschrieben werden. Falls nun ein geometrisches Objekt durch diesen Strahl geschnitten wird und von den übrigen geschnittenen Objekten der Szene die geringste Entfernung zur Kameraposition hat, wird dieses als ausgewählt beizeichnet. Im folgendem soll anhand des primitiven Objekts Dreieck eine solche Selektionsüberprüfung dargelegt werden: Damit ein Strahl, dessen Punkte die Menge R bilden, ein Dreieck schneidet, müssen folgende Bedingungen erfüllt sein: Der Strahl muss die Ebene in der sich das Dreieck befindet, wie in Abbildung 3-9 dargestellt, schneiden und der Schnittpunkt muss in diesem Dreieck liegen. Gegeben sei s n also der Kamerapunkt K , der Richtungsvektor r des Strahls s und die Punkte P1 , P2 , P3 des Dreiecks. Die Punkte der Ebene bilden die Menge E . Mit den drei Punkten erstellt des Dreiecks wird zunächst die Dreiecksebene (3.8). Um nun einen Schnitt von Strahl und Ebene festzustellen, wird das Punktprodukt von dem r P3 P2 P1 K Richtungsvektor r und dem Normalenvektor n errechnet (3.9). Sobald dieses Produkt Null ist stehen die Vektoren senkrecht zu einander und der Strahl schneidet die Ebene entweder in unendlichen vielen Punkten (3.10) oder in keinem (3.11). Um auszuschließen, dass sich der Strahl in der Ebene Befindet, darf der Punkt K nicht in E enthalten sein. Es gibt genau dann Abbildung 3-9: Schnitt von Strahl und Ebene einen Schnittpunkt, wenn das Punktprodukt von r und n nicht Null ist (3.12). A n = P1P2 × P1P3 = B C D= (3.8) ( AP 1x + BP1y + CP1z ) : Ax + By + Cz + D = 0 s: (3.9) x y = OK + t r ; t z 0 n r = A rx + B ry + C rz = n r cos ( (3.10) (3.11) (3.12) n r=0 K E n r = 0 K "E n r#0 n!r R n!r s ) E R $ E =1 Als nächstes erfolgt eine Berechnung zur Bestimmung des Schnittpunkts von Strahl und Ebene. (3.8) eingesetzt und nach dem Hierzu wird die Strahlengleichung s (3.9) in die Ebenengleichung Parameter t so aufgelöst, dass schließlich der Parameter t s für den Schnittpunkt übrig bleibt (3.13). Ronny und Steffen Harbich 11 ( ) A ( K x + t s rx ) + B K y + ts ry + C ( K z + ts rz ) + D = 0 A Kx + B K y + C Kz + D ts = (3.13) ts A rx + B ry + C rz = A Kx + B K y + C Kz + D n r cos ( ) 0 Danach erfolgt ein Einsetzen von t s in die Strahlengleichung, sodass letztendlich der Schnittpunkt S errechnet wird (3.14). Sx s : OS = S y = OK + (3.14) A Kx + B K y + C Kz + D Sz ( S Sx ; S y ; Sz A rx + B ry + C rz ) Anschließend muss noch überprüft werden, ob sich der Schnittpunkt innerhalb des Dreiecks befindet. Die Abbildung 3-10 zeigt das Dreieck in grüner und den Schnittpunkt S in blauer Farbe. Wenn sich ein Punkt in einem Dreieck befindet muss folgendes erfüllt sein: Die Summe der P3 Winkel zwischen den Vektoren P1 r SP1 , SP2 und SP3 muss 360° betragen oder die Summe der Barizentrischen Koordinaten muss Eins sein (3.15). ' P2 Abbildung 3-10: Schnittpunkt im Dreieck a b = ax bx + a y by + az bz = a b cos (& ) & = arccos ax bx + a y by + az bz a b (3.15) = arccos + SP1 SP3 SP1 SP3 + ' = 360° = arccos SP3 SP2 SP3 SP2 x OP1 + y OP2 + z OP3 = OS ' = arccos SP2 SP1 SP2 SP1 x + y + z =1 Die oben dargelegte Methodik überprüft nur, ob ein Dreieck von einem Strahl getroffen wird oder nicht. Da ja Polygone, Ellipsen und alle dreidimensionalen geometrischen Objekte aus Dreiecken bestehen muss die Engine jeweils für alle Dreiecke dieser Objekte die oben beschriebenen Überprüfungen vornehmen. Wenn mehrere geometrische Objekte von dem Strahl getroffen werden muss anhand der Schnittpunkte bestimmt werden, welches sich näher am Kamerapunkt befindet. Natürlich wird der Überprüfungsvorgang aufgrund numerischer Optimierungsgründen bei bestimmten aus vielen Dreiecken aufgebauten geometrischen Objekten, wie zum Beispiel der Kugel anders verlaufen. Auch wurde in der Engine eine verbesserte Version der beschriebenen Vorgehensweise implementiert. Diese kann jedoch an dieser Stelle nicht näher erläutert werden. 3.2.3.8 Techniken für Darstellungsverbesserungen Die Engine verwendet die so genannte Billboarding-Technik (/17/). Im Grunde versucht dieser Effekt zweidimensionale Objekte, wie Bilder und Schriften zu scheinbar dreidimensionalen Objekten zu verändern. Hierzu findet eine Rotation des Objekts statt, sodass die Bild- beziehungsweise die Ronny und Steffen Harbich 12 Schriftfläche immer exakt zur Kameraposition gerichtet ist. Ein Anwendungsbeispiel wäre die Beschriftungen der Koordinatenachsen, welche sich bei jeder Bewegung in einer Szene automatisch zum Betrachter drehen würden. Eine weitere verwendete Technik, dass so genannte Hardware Transform And Lighting, kurz T&L, ermöglicht der Engine die volle Hardwareunterstützung im Bereich der Transformations- und Lichtberechnung auszunutzen. So werden, statt die CPU zu belasten, diese notwendigen Berechnungen auf die Graphics Processing Unit, kurz GPU, umgeleitet. Die Engine kann bei bedarf auch auf eine Technik zurückgreifen, die heutige Grafikkarten im Allgemeinen unterstützen. Die Rede ist von Anti-Aliasing. Die Abbildung 3-11 soll verdeutlichen, wie das Verfahren funktioniert. Dazu wurde oben in der Abbildung eine Linie gezeichnet ohne die Abbildung 3-11: Linie mit und Verwendung von Anti-Aliasing und unten eine Linie mit der ohne Anti-Aliasing Verwendung dieser Technik. Das Ergebnis zeigt, dass bei NichtNutzung dieser Technologie der so genannte qualitätsreduzierende Treppeneffekt entsteht. Um nun diesen Effekt zu unterbinden, vermischt das Anti-Aliasing-System die Farben der am Rand der Linie befindlichen Bildpunkte mit den Farben der benachbarten Bildpunkte des Hintergrunds. Anti-Aliasing erhöht die Qualität, jedoch ist auf eine eventuell verringerte Leistung zu achten. Damit auch eine hohe Qualität bei der Darstellung von Bildern und Schriften gewährleistet 1 werden kann, unterstützt die Engine optional anisotropische Texturfilterung (/18/) und Mipmapping (/19/). Das Prinzip der Texturfilterung durch Mipmapping besteht aus der Benutzung mehrer zuvor mit hoher Qualität berechneter verkleinerter Texturen, den Mipmaps. Verwendet man zum Beispiel eine Originaltexturgröße von 256x256, so werden die Formate 128x128 und 64x64 automatisch generiert. Direct3D Graphics entscheidet schließlich beim Zeichnen, welche Größe der Texturen am besten für die momentane Darstellung geeignet ist. Anisotropische Filterung dagegen ist ein ähnliches Verfahren wie die lineare Texturfilterung, berücksichtigt jedoch die perspektivische Verzerrung und interpoliert die Textur qualitativ besser je tiefer sich ein Objekt befindet. 3.2.3.9 Erweiterbarkeit Die Erweiterbarkeit der Engine steht bei der Entwicklung mit an oberster Stelle. Erweiterbarkeit heißt, dass die Funktionalität der Engine auf einfachem Wege ausgeweitet und verändert werden kann. Dies ermöglicht eine ständige Weiterentwicklung, welche wiederum gestattet neue Arten geometrischer Objekte, neue Effekte und neue Techniken zu verwenden. Damit kann die Aktualität der Engine in hohem Maße gewährleistet werden. In der Praxis wird ein solches Ziel berücksichtigt und umgesetzt, indem die Klassenstruktur von Anfang an gut durchdacht und ausbaufähig gestaltet wird. Hierzu zählt zum Beispiel die Verwendung von Basisklassen, die so abstrakt wie möglich und so angepasst wie nötig die Aufgaben der Quelltext-Einsparung und der Übersicht übernehmen. 4. Bedienung Der Aufbau der Benutzeroberfläche erfolgte so, dass die Bedienung für den Anwender relativ einfach ist. Anhand der folgenden exemplarischen Vorgehensweise soll die Erstellung einer Szene mit einer Kugel verdeutlicht werden: Zu Beginn muss der Benutzer über den Untermenüeintrag „Neu…“ im Menüpunkt „Datei“ eine neue Szene erstellen. Das Programm wird anschließend eine neue Tabseite, in der die Szene dargestellt wird, erstellen und anzeigen. Standardmäßig wird ein Koordinatensystem mit Pfeilen für die X-, Y- und Z-Achse angezeigt. Um nun ein geometrisches Objekt, zum Beispiel eine Kugel, zu erstellen, gibt es zwei Möglichkeiten. 1. Falls dem Benutzer die exakten Koordinaten der Punkte eines geometrischen Objekts bekannt sein sollten, kann er diese über einen Dialog angeben. Für eine Kugel wären zum Beispiel Mittelpunkt und Radius nötig. Nach dem Bestätigen des Dialogs wird das Objekt mit den angegebenen Werten erstellt und sichtbar. 2. Der Benutzer kann nach bedarf ein Objekt auch mit der Maus erstellen und bearbeiten. Hierzu muss dieser lediglich den Hinweisen der Statusleiste des Programms folgen, die die Reihenfolge der Punkterstellung vorgibt. Ein Punkt wird erstellt, indem der Benutzer mit der Maus auf die X-Z-Ebene zeigt, um die Koordinaten X und Z festzulegen. Hält der Anwender eine Taste, standardmäßig die Umschalt-Taste, gedrückt, so bezieht sich die Mausbewegung auf das Festlegen der Y-Koordinate. Um eine Kugel mit der Maus zu erstellen, muss der Anwender den Mittelpunkt nach der oben genannten Art und Weise erzeugen und schließlich durch Bewegen der Maus den Radius festlegen. Nachdem nun die Kugel oder andere geometrischen Objekte erzeugt worden sind, sollte der Benutzer die Szene über den Menüeintrag „Speichern“ beziehungsweise „Speichern unter…“ im Menüpunkt „Datei“ sichern. Dies ist notwendig, 1 MIP steht für multum in parvo, was soviel wie „Viele unter Gleichen“ bedeutet (/2/, Seite 192). Ronny und Steffen Harbich 13 damit die Szene in folgenden Sitzungen wieder geladen werden kann. Neben dem Erstellen ist auch das Bearbeiten eines Objekts beziehungsweise dessen Punkte mit der Maus möglich. Hierzu wählt der Benutzer ein geometrisches Objekt aus und verschiebt die einzelnen Punkte nach der oben beschriebenen Art und Weise. Andere Eigenschaften, sowie die Koordinaten der Punkte können auch direkt im Eigenschaftauflistungs-Steuerlement manipuliert werden. 5. Zusammenfassung Von dem Ziel motiviert den Unterricht an Schulen besser zu gestalten, entwickelten wir eine speziell angepasste Software zur räumlichen Darstellung geometrischer Figuren. Mit ihr haben Lehrer aber besonders auch Schüler nun die Möglichkeit, während des Unterrichts leicht und schnell geometrische Objekte zu erzeugen. So kann der entsprechende Lehrinhalt innerhalb kürzester Zeit, ohne aufwendige Vorbereitungen, visualisiert werden. Anstelle der Betrachtung langweiliger und lebloser Einzelbilder eines mit Figuren gefüllten Raums, gestattet die neue Software dem Anwender eine freie Bewegung in allen beliebigen Richtungen. Auch lässt sich der Raum in automatische Rotation versetzen, wodurch sich die Illusion von Räumlichkeit zusätzlich erhöht. Um geometrische Objekte anzeigen zu lassen, verfügt die Anwendung über einen so genannten Präsentationsmodus. Mit diesem wird eine hervorragende Unterstützung von Bildschirmen und digitalen Projektoren erreicht, indem der gesamte Darstellungsbereich für die Visualisierung des Raums genutzt wird. Die neue Software verfügt notwendiger Weise über einen Erstellungsmodus. Dieser ermöglicht es dem Anwender, die räumlichen Figuren anzufertigen und zu bearbeiten. Dank einer sich, je nach Funktionsbedarf dynamisch anpassender Benutzeroberfläche und einer vor allem mit der Maus leicht zu bedienenden Anfertigung der Objekte, ist der gesamte Erstellungsprozess besonders anwenderfreundlich gestaltet worden. Weiterhin spielt das integrierte Hilfesystem innerhalb der Software eine große Rolle. So wird dem Benutzer beispielsweise eine Hilfe eingeblendet, die die einzelnen Konstruktionsschritte während der Erzeugung eines geometrischen Objekts darlegt. Die Software wurde mit der hochmodernen Entwicklungsumgebung Microsoft Visual Studio .NET 2003 und mit Microsoft DirectX 9.0b, einer der besten und leistungsfähigsten Grafikkartenschnittstellen kreiert. Die beiden Systeme garantieren höchste Grafik- und Benutzungsqualität für den Anwender und eine optimale Erweiterbarkeit der Software für die Entwickler. So ist es beispielsweise möglich, neue noch nicht implementierte geometrische Objekte zu integrieren, ohne dabei tief greifende Veränderungen am Programm vornehmen zu müssen. Um die Grafik auf den heutigen Stand anzupassen, wurden die auch in Computerspielen verwendeten Techniken, wie Billboarding, anisotropische Texturfilterung, Anti-Aliasing und Hardware Transform And Lighting eingesetzt. Schlussendlich sollte noch beachtet werden, dass bereits im dreidimensionalen Raum arbeitende Software auf dem freien Markt existiert. Diese oftmals exorbitant teuren Anwendungen sind allerdings nur für professionelle Benutzer, die in Bereichen wie Architektur und Wissenschaft arbeiten, geeignet. Unsere kostenfreie Software hingegen sollte eine echte, für Schüler und Lehrer leicht zu verwendende Alternative sein. 6. Diskussion Die entwickelte Software scheint allen Anforderungen gerecht zu werden, die sich unter anderem aus den Nachteilen der konventionellen für den dreidimensionalen Raum konzipierten Geometriesoftware ergeben haben. Jedoch muss an dieser Stelle verdeutlicht werden, dass die Geometriesoftware selbst noch Verbesserungspotential aufweist. Ein Beispiel dafür sind die fehlenden Berechnungen für Schnittpunkte, Winkel und so weiter, die typischerweise von zweidimensionaler Geometriesoftware zur Verfügung gestellt werden. Jedoch ist dies zur Zeit nicht das Hauptanliegen des Projekts solche Berechnungen zu implementieren, da die Software ausschließlich für Visualisierungen genutzt werden soll. Weiterhin ist zu beachten, dass die Software nicht auf allen gebräuchlichen Plattformen funktioniert. So ist es aufgrund der Verwendung von DirectX 9.0b nicht möglich die Anwendung auf Windows 95, Linux oder Mac OS zu betreiben. Dennoch stellt die Plattformabhängigkeit kein größeres Problem dar, da ja viele Anwender Windows 98/2000/XP oder 2003 auf ihrem Heim-PC benutzen. Neben den oben genannten Plattformen wird außerdem vorausgesetzt, dass der Benutzer eine DirectX 9 kompatible Grafikkarte und einem hinreichend leistungsstarken Prozessor besitzt. Einer der Größten Vorteile der Geometriesoftware ist wohl die besonders einfache Bedienung gegenüber professioneller im dreidimensionalen Raum arbeitender Programme. So verbessern viele kleine Benutzeroberflächen das Erstellen, Betrachten und Bearbeiten von Informationen. Weiterhin Ronny und Steffen Harbich 14 werden, um ein hohes Maß an Übersichtlichkeit zu erreichen, auch immer nur die Funktionen des Programms sichtbar, die zur Zeit tatsächlich benötigt werden. Außerdem können geometrische Objekte mit der Maus problemlos erstellt und bearbeitet werden. Das Hilfesystem sollte zusätzlich das Erlernen des Umgangs mit der Anwendung erleichtern und somit teure Schulungen oder Einführungskurse vermeiden. Die Geometrieanwendung soll natürlich für den Unterricht geeignet sein. So ist es dank des Vollbildschirm-Modus möglich alle anderen Anwendungen gewissermaßen auszublenden, um nur den mit geometrischen Objekten gefüllten Raum anzeigen zu lassen. Damit ein besserer räumlicher Eindruck entsteht, lässt sich die Szene in eine automatische Rotation versetzen, wenngleich auch die Möglichkeit zur freien Bewegung in dieser besteht. Eine sinnvolle Darstellung mit Hilfe von digitalen Projektionsapparaturen wie zum Beispiel dem Beamer wird somit außerdem unterstützt. Sollte einmal kein Personalcomputer für die Präsentation von geometrischen Objekten vorhanden sein, ist es Möglich die Szene auf Papier auszudrucken. Einen besonderen Vorteil erhält die Anwendung durch die allgemeine Erweiterbarkeit. Mit ihr können beispielsweise neue geometrische Objekte, Eigenschaften und zusätzliche Hilfen äußerst einfach hinzugefügt werden. Die Software soll weiterhin nicht nur an Schulen direkt, sondern auch bei den Schülern zu Hause eingesetzt werden. So wurde sich letztendlich für eine vollkommen kostenlose und frei kopierbare Anwendung entschieden. Wir hoffen, dass die Geometriesoftware bei vielen Lehrern und Schülern Anklang finden wird. 7. Danksagung Unser größter Dank gilt unserem Betreuungslehrer Herrn Maik Schnitzer, der uns bei der Korrektur dieser Wettbewerbsarbeit und beim Testen der neuartigen Geometriesoftware mehr als nur lobenswert unterstützt hat. Wir bedanken uns außerdem beim Winckelmann-Gymnasium Stendal und bei unseren Eltern Gudrun und Klaus Harbich für die finanziellen und technischen Beiträge zu unserem Projekt. 8. Quellenverweis /1/ /2/ PHYSIK - Themen, Bedeutung, und Perspektiven physikalischer Forschung Herausgeber: Deutsche Physikalische Gesellschaft e. V. (DPG), 53604 Bad Honnef, 2000 Uwe Kettermann und Christian Schmelzer: directX mit visual basic programmieren, Markt+Technik Verlag, 81829 München, 2000 Folgende Verweise beziehen sich auf des Microsoft Developer Network (MSDN) von Microsoft Visual Studio .NET 2003 Academic: /3/ Übersicht über die Sprachinteroperabilität, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpguide/html/cpconcross-languageinte roperability.htm /4/ Menu-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsM enuClassTopic.htm /5/ ToolBar-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsT oolBarClassTopic.htm /6/ TabControl-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsT abControlClassTopic.htm /7/ TabPage-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsT abPageClassTopic.htm /8/ StatusBar-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsSt atusBarClassTopic.htm /9/ PropertyGrid-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsP ropertyGridClassTopic.htm /10/ Übersicht über Reflektion, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpguide/html/cpconreflectionoverview. htm Ronny und Steffen Harbich 15 /11/ Übersicht über Attribute, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/vbcn7/html/vaconattributesoverview.ht m /12/ Introducing DirectX 9.0 for Managed Code, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_m/directx/dx9intro.htm /13/ UserControl-Klasse, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpref/html/frlrfSystemWindowsFormsU serControlClassTopic.htm /14/ XML in Visual Studio, ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/vsintro7/html/vxorixmlinvisualstudio.ht m /15/ Vertex and Pixel Processing, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_c/directx/graphics/programmingguide/fixe dfunction/legacyfvfformats/vertexandpixelprocessing.htm /16/ Devices 7. Device-Supported Primitive Types, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_m/directx/direct3d/gettingstarted/devices/ primitives/devicesupportedprimitivetypes.htm /17/ Billboarding, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_c/directx/graphics/programmingguide/adv ancedtopics/framebuffer/alphaexamples/billboarding.htm /18/ Anisotropic Texture Filtering, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_c/directx/graphics/programmingguide/fixe dfunction/textures/filtering/anisotropicfiltering.htm /19/ Texture Filtering with Mipmaps, ms-help://MS.VSCC.2003/MS.DirectX9.1033/DirectX9_c/directx/graphics/programmingguide/fixe dfunction/textures/filtering/texturefilteringwithmipmaps.htm