====== Einführung in die Computergrafik und Bildverarbeitung ====== Wintersemester 2021/22 ===== 17. November 2021 - Bezier Curves, Filled Polygons ===== - Bezier-Kurven - Fill Algorithms - Überblick Studienleistung 2: Vektor-Grafik ===== Umfrage Aufgaben ===== {{ :courses:cgbv_21ws:slides:pasted:20211102-103735.png?nolink&600 |}} https://pingo.coactum.de/781526 ===== Bezier-Kurven ===== (Intro Live) Hervorragende Tutorials: - http://antoineleclair.ca/2011/08/27/understanding-quadratic-bezier-curves/ - https://pomax.github.io/bezierinfo/ - https://ciechanow.ski/curves-and-surfaces/ ===== Fill Algorithms ===== (Intro Live) Tutorials: - https://www.hooni.net/study/filling/ - https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/PolygonFilling.html ===== Studienleistung 2: Vektor-Grafik (1) ===== Entwickeln Sie eine Zeichenanwendung mini-draw.py, mit der man Vektorgrafiken erstellen und bearbeiten kann. Die Funktionsweise soll gängigen Vektorgrafikprogrammen wie z.B. Inkscape ähneln. Die Anwendung soll einen ``tkinter.Canvas`` verwenden, in dem über die ``create_rect()``-Methode einzelne Pixel gesetzt werden. Alle weiteren Zeichenoperationen sollen auf dieser Basis implementiert werden. **Abgabe: Do, 2. Dezember 2021** (5 Bonuspunkte - pro angefangener weiterer Woche 1 Punkt weniger) ===== Studienleistung 2: Vektor-Grafik (2) ===== Verpflichtende Features: - Zeichnen von geraden Linien mit der linken Maustaste - Zeichnen von quadratischen Bezier-Kurven, indem für jede gezeichnete Linie in der Mitte ein Kontrollpunkt gezeichnet wird, der gezogen werden kann - Zeichnen von gefüllten Polygonen - Alle End-/Eck-/Kontrollpunkte sollen als kleine Rechtecke (z.B. 5x5 px) dargestellt werden und mit der Maus verschoben werden können - Mittels 'x' kann man die End-/Eck-/Kontrollpunkte ein-/ausblenden - Mittels 'c' kann man den Canvas leeren - Mit der mittleren Maustaste kann der gesamte Canvas verschoben werden ===== Studienleistung 2: Vektor-Grafik (3) ===== Wahlpflichtfeatures (3 Features): - Zoomen mit dem Scrollrad (Liniendicke bleibt konstant 1 px) - Zeichnen mit Farben (Auswahldialog von tkinter verwenden) - Speichern und Laden der Grafik - Zeichnen von Rechtecken oder Kreisen mit der rechten Maustaste - effizientes Neuzeichnen des Bildschirms nur dort, wo sich etwas verändert hat - Antialiasing der Linien - (eigenes Feature vorschlagen) ===== Studienleistung 2: Vektor-Grafik (4) ===== - bei Verwendung fremder Code-Beispiele: Quellenangabe im Text - keine weiteren Bibliotheken verwenden außer tkinter, numpy - Abgabe von Quellcode und kurzer Video-Demo (ca. 1 Minute) - Fragen? ===== Ausblick 23. November 2021 - Szenengraphen, Wrap-Up 2D ===== - Szenengraphen für Transformationen, Gruppierungen - Wrap-up 2D-Grafik - offene Fragen - Optimierungen