ueb16 - oth

Werbung
16. Übung
Erstellen einer prozeduralen Windows-Anwendung mit GDI
Es soll eine prozedurale Windows-Anwendung mit graphischer Ausgabe entwickelt
werden. Die graphischen Ausgaben erfolgen über das GDI.
Auf einem leeren Fenster sollen drei Punkte durch den Mauscursor definiert werden.
Danach wird das Sierpinski-Dreieck für das definierte Dreieck gezeichnet. Die
folgenden Abbildungen zeigen das Endergebnis dieser Übung:
1. Das leere Ausgangsfenster:
2. Die Definition des ersten Punktes: Die Auswahl erfolgt über die Position des
Mauscursor und dem Drücken der linken Maustaste.
3. Die Definition des zweiten Punktes:
4. Die Ausgabe des Sierpinski-Dreiecks nach der Definition des dritten Punktes:
Nachdem der dritte Punkt definiert wurde, wird das Sierpinski-Dreieck gezeichnet.
Das Konstruktionsverfahren für die Sierpinski-Kurve wird nachstehend erklärt.
Das Konstruktionsverfahren des Sierpinski-Dreiecks
Beim der Sierpinski-Kurve handelt es sich um ein Fraktal. Bekannte Fraktale sind
unter anderem die Kochkurve (Schneeflocken-Kurve) oder die Mandelbrotmenge. Bei
Fraktalen handelt es sich meist um rekursive Strukturen die Selbstähnlichkeit zeigen.
Auch die Sierpinski-Kurve besitzt diese Eigenschaften.
Das Konstruktionsverfahren
1. Ausgegangen wird von den Ausgangspunkten, die ein Dreieck bilden
2. Die drei Seiten des Dreiecks werden jeweils halbiert. Daraus entstehen drei neue
Punkte an den Kanten des Dreiecks: A’, B’, C’
3. Über Vektorrechnung können die Punkte auf den Kanten berechnet werden. Dazu
ist nur eine einfache Vektorrechnung nötig.
  
Gegeben sind die drei Ortsvektoren der Eckpunkte des Dreiecks: A, B, C
Aus Vektorrechnung ergibt sich für die Ortsvektoren der neuen Punkte:
 
 
 
  BA
  AC
  CB
A'  A 
bzw. B'  B 
bzw. C '  C 
2
2
2
4. Die neu gewonnen Punkte an den Kanten werden zu jeweils drei inneren
Dreiecken verbunden.
5. In der nächsten Iteration werden die Kanten an den neu gewonnen Dreiecke
wieder nach gleichem Schema (wie unter Punkt 3) halbiert.
6. Diese neu entstandenen Punkte werden wieder miteinander verbunden.
Dieses Schema lässt sich nun mehrmals vorsetzen. Für ein Rechnerprogramm
terminiert dieser Algorithmus nach n Schritten (z.B. n=5).
Für die Implementierung wird ein rekursiver Algorithmus vorgeschlagen, welcher
nach n Rekursionsabstiegen terminiert.
Bemerkung: Das Zeichnen der Kanten der Dreiecke sollte auf der untertesten
Rekursionsebene erfolgen. Auf dieser Ebene sind die kleinsten Dreiecke zu
zeichnen, welche sich dann im Gesamtbild zum Sierpinski-Dreieck zusammensetzen.
Die Implementierung
1. Starte Microsoft Visual Studio .NET 2003
2. Erstellen einer prozeduralen Windows-Anwendung
Unter VS ist ein neue Win32-Projekt zu erstellen: Datei  Neu  Projekt  Win32Projekt
Nach der Angabe des Projektnamens wird auf „OK“ gedrückt und der anschließende
Dialog mit „Fertig stellen“ beendet.
3. Einfügen der Anwendungslogik
Die Anwendungslogik ist nun in den Quellcode einzufügen. In der Routine WndProc
kann auf Ereignisse reagiert werden (wie z.B. „linke Maustaste gedrückt“). So besteht
in der WndProc die Möglichkeit, die gewünschten Aktionen auszuführen.
Tipps zur Vorgehensweise
Die Anwendung kann in zwei Schritten implementiert werden.
1. Zeichnen der Punkte
Im ersten Schritte sollen die vom Benutzer durch die Maus definierten Punkte durch
schwarz-gefüllte Kreise dargestellt werden.
Zeichenroutinen und weitere Funktionen zur Windows-Programmierung finden sich
im Skript unter 6.1.2. Sehr hilfreich ist das Beispiel unter 6.1.3
2. Zeichnen des Sierpinski-Dreiecks:
Nachdem drei Punkte vom Benutzer definiert worden sind, kann das SierpinskiDreieck gezeichnet werden. Dies geschieht nach dem oben beschriebenen Schema.
Im ersten Schritt muss das Dreieck dabei nicht die Farben des Beispiels annehmen,
sondern sollte einfach mit schwarzer Farbe dargestellt werden. Die Farbgebung ist
somit optional.
Herunterladen