Übungsstunde 5 zu Computergrafik 1

Ähnliche Dokumente
Programmierpraktikum 3D Computer Grafik

-dimensionale Darstellungen

Computergrafik Universität Osnabrück, Henning Wenke,

2D-Punkt-Transformationen

Mathematiklabor 2. Übungsblatt

Übung: Computergrafik 1

Computergrafik Sommersemester 2004 Übungen

Computergrafik 1 Transformationen

Affine Koordinatentransformationen

Transformation - Homogene Koordinaten. y + b )

MaTHEMATISCHE GRUNDLAGEN BUGA-AR TELESCOPE. Marko HeRBERTZ

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert.

3D-Transformationen. Kapitel Translation Skalierung

Inhaltsverzeichnis. 1 Hardwaregrundlagen

2D-Transformationen. Kapitel Translation. 6.2 Skalierung

Kapitel 3: Geometrische Transformationen

Computergrafik 1 Übung

Tag 3. Zweidimensionale Spielewelten

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

Programmierpraktikum 3D Computer Grafik

Transformationen im 3D-Raum

3D-Transformationen. Kapitel Translation Skalierung

Lineare Algebra und Computer Grafik

4 Grundlagen zu SVG-Karten und -Diagrammen...33

1.1 Verwendung von GLUT

Bernhard Strigel Gymnasium Kollegstufe 2009/11 Leistungskurs Mathematik M2 Klemens Schölhorn. Facharbeit

OpenGL Transformationen: Modeling

Programmierpraktikum 3D Computer Grafik

Transformation - 3. Für "übliche" Anwendungen in der Geometrie ist es sinnvoll, bei Transformationen eine gleiche

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Computergrafik Universität Osnabrück, Henning Wenke,

Graphische Datenverarbeitung und Bildverarbeitung

Repräsentation und Transformation von geometrischen Objekten

Kapitel 2: Mathematische Grundlagen

Universität Osnabrück Fachbereich Mathematik / Informatik. 4. Vorlesung ( )

Mathematik LK 12 M1, 4. Kursarbeit Matrizen und Stochastik Lösung )

Computergrafik Universität Osnabrück, Henning Wenke,

Mathematische Grundlagen

Transformationen. 09-Transformationen

Mathematische Grundlagen

C A R L V O N O S S I E T Z K Y. Transformationen. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

ABC ABC. Affine Abbildungen. Definition und Anwendungsbeispiele. Prof. Dr. Andreas de Vries. Fachhochschule Südwestfalen, Standort Hagen

Geometric Algebra Computing Rotationen in GA Dr. Dietmar Hildenbrand

(6) View Transformation. Vorlesung Computergrafik T. Grosch

1 Analytische Geometrie

Computergrafik 2010 Oliver Vornberger

Computer Graphik (CS231) Projektübungsblatt 3

Aufgabenblatt 2. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt:

Koordinaten, Transformationen und Roboter

Objektorientierte Programmierung

Grafikeinbindung in LaTeX

Hans Delfs. Übungen zu Mathematik III für Medieninformatik

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

Transformation Allgemeines Die Lage eines Punktes kann durch einen Ortsvektor (ausgehend vom Ursprung des Koordinatensystems

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Erste Java-Programme (Scopes und Rekursion)

3D-Sicht, Projektionen

2 Die Algebra der Matrizen

Lösungsvorschlag zum zweiten Übungsblatt

Grundlagen der 3D-Grafik

Matrizen und Drehungen

3.5 Transformationen im Raum

Kapitel 3. Transformationen

JavaFX Koordinaten und Transformationen

YOUNG SCIENTISTS. 4 dimensionale komplexe Zahlen in der Computergrafik. Bastian Weiß 19. Mai 2017 INSTITUT FÜR ANGEWANDTE GEOMETRIE

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

EVC Repetitorium Blender

Kinematik des Puma 200

Geometrische Deutung linearer Abbildungen

Zusammenfassung Dieser Text entstand im Frühjahr 2001 im Rahmen des Computergrafik-Seminars bei Prof. Giesen, angeboten im Wintersemester 2000/2001 an

Klausur zur Vorlesung Lineare Algebra B im SS 2002 an der Universität Hannover

Lösung: Mathematisches Denken in Arithmetik und Geometrie1 Funktionen und Abbildungen mit GeoGebra

Klausur Computergrafik für Bachelor-Studierende WS 2009 / 10

Universität Duisburg - Essen

(10) View Transformation

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Gliederung. Gliederung (cont.) Kinematik-Gleichungen - (1) Allgemeine Informationen Einführung Koordinaten eines Manipulators. Kinematik-Gleichungen

y x x y ( 2x 3y + z x + z

Lösbarkeit linearer Gleichungssysteme

Grundlagen der OO- Programmierung in C#

Das OpenGL Utility Toolkit GLUT. Verwendung von GLUT

Advanced Computer Graphics Erweiterung zur 6. Übung

Grafikprogrammierung (Echtzeitrendering)

Lineare Abbildungen (Teschl/Teschl 10.3, 11.2)

Einführung in die Robotik. Jianwei Zhang

Computer Vision I. Nikos Canterakis. Lehrstuhl für Mustererkennung, Universität Freiburg,

Aufgabenvorstellung Phase 2

Darstellung eines Bildes

Lineare Transformationen, Teil 1 Lösungen zu den Aufgaben. 1 E1 Ma 1 Lubov Vassilevskaya

Was ist Robotik? Robotik heute:

1 Strg. Strg. Attribute übernehmen: Aktivieren (X) Zeiger über dem Objekt) T-Taste zeigt Hilfskreis und Parallelen

Lineare Abbildungen. De nition Seien V, W Vektorräume. Eine Abbildung f : V! W heißt linear, wenn gilt

Tutoraufgabe 1 (Seiteneekte):

Vektoren und Matrizen

Kurze Einführung in die Programmiersprache C++ und in Root

3 Koordinatentransformationen

Musterlosung 1. z w () 9a 2 R : w = z + a (1 + i) Eine Relation ist Aquivalenzrelation, gdw. gilt:

Proseminar Computergrafik: OpenGL. Marcel Heckel

Transkript:

Institut für Computervisualistik Universität Koblenz 19. un 20. November 2012

Inhaltsverzeichnis 1 Transformationen Translation Skalierung Rotation 2 Reihenfolge von Transformationen Beispiele 3 Programmieraufgabe 4 GLUT & Keyboardeingaben

Worum geht s? CGI bis jetzt nur statische Szenen Ohne Bewegung wäre die Computergrafik langweilig Ziel: Durch Transformationen, Rotationen, Skalierungen Bewegung schaffen

Translation Translation Verschiebung Es existiert ein Verschiebungsvektor t = ( tx Der( Vektor ) wird ( auf alle Eckpunkte ) des Objektes addiert. p x tx + p p y = x t y + p y t y )

Translation Translation mit OpenGL gltranslatef(x, y, z) x, y, z definiert den Verschiebungsvektor Resultat: eine Verschiebungsmatrix, welche auf die aktuelle Matrix multiplizert wird

Translation Translationsmatrix 1 0 0 t x T (t x, t y, t z ) = 0 1 0 t y 0 0 1 t z 0 0 0 1

Skalierung Skalierung Objekte ( werden ) ( mit Faktoren ) für x, y und z skaliert. p x sx p p y = x s y p y

Skalierung Skalieren mit OpenGL glscalef(x, y, z) x, y, z definiert die Verzerrung der Achsen Resultat: eine Skalierungsmatrix, welche auf die aktuelle Matrix multiplizert wird

Skalierung Skalierungsmatrix s x 0 0 0 S(s x, s y, s z ) = 0 s y 0 0 0 0 s z 0 0 0 0 1

Rotation Rotation Objekte werden um eine bestimmte Achse und einen bestimmten Winkel gedreht

Rotation Rotieren mit OpenGL glrotatef(angle, x, y, z) angle beschreibt den Winkel (in Grad) um den rotiert werden soll x, y, z definiert eine Rotationsachse Resultat: eine Rotationssmatrix, welche auf die aktuelle Matrix multiplizert wird

Rotation Rotationsmatrizen 1 0 0 0 R x (α) = 0 cosα sinα 0 0 sinα cosα 0 0 0 0 1 cosα 0 sinα 0 R y (α) = 0 1 0 0 sinα 0 cosα 0 0 0 0 1 cosα sinα 0 0 R z (α) = sinα cosα 0 0 0 0 1 0 0 0 0 1

Rotation Matrizenakkumulation Verschiedene Transformationen können hintereinander ausgeführt werden Die einzelnen Matrizen werden akkumuliert, indem sie immer auf die aktuelle Matrix multipliziert werden OpenGL legt die Matrizen auf einen Stack LIFO Reihenfolge der ausgeführten Transformationen: von unten nach oben im Code

Rotation Matrizenstack Es existiert eine globale Matrix, an die die einzelnen Transformationen von rechts multipliziert werden MODELVIEW Richtigen Stack auswählen: GL PROJECTION ist nur für die Projektion zuständig Also umschalten auf glmatrixmode(gl MODELVIEW) Mit glloadidentity() die Einheitsmatrix aufrufen

Unterscheidung zwischen: Rotation/Skalierung um den Ursprung Rotation/Skalierung mit Bezug auf einen Punkt Erst Skalieren, dann Rotieren Erst Rotieren, dann Skalieren

Beispiele Beispiel Reihenfolge I Rotation um den Ursprung Rotation um den Ursprung

Beispiele Beispiel Reihenfolge I Rotation um den Ursprung Rotation um den Ursprung Rotation um den Mittelpunkt Translation unter Berücksichtigung des Mittelpunktes in den Ursprung Rotation im Ursprung Translation um den Referenzpunkt zurück zur Ausgangsposition

Beispiele Beispiel Reihenfolge II Skalierung um den Ursprung Skalierung um den Ursprung

Beispiele Beispiel Reihenfolge II Skalierung um den Ursprung Skalierung um den Ursprung Skalierung um den Mittelpunkt Translation unter Berücksichtigung des Mittelpunktes in den Ursprung Skalierung im Ursprung Translation um den Referenzpunkt zurück zur Ausgangsposition

Beispiele Beispiel Reihenfolge III Skalierung und Rotation Translation in den Ursprung Rotation Skalierung

Beispiele Beispiel Reihenfolge III Skalierung und Rotation Translation in den Ursprung Rotation Skalierung Skalierung und Rotation Translation in den Ursprung Skalierung Rotation

Rotating Star Ein Stern soll sich um seinen Mittelpunkt drehen Es soll möglich sein, den Mittelpunkt des Sterns per Mauseingabe festzulegen

Rotating Star Ein Stern soll sich um seinen Mittelpunkt drehen Es soll möglich sein, den Mittelpunkt des Sterns per Mauseingabe festzulegen Überlegung Welche Transformationen sind nötig? In welcher Reihenfolge müssen sie ausgeführt werden?

Keyboardeingaben - glutkeyboardfunc Für Zahlen und Buchstaben, alles was einen ASCII Code hat void keyboard(unsigned char key, int x, int y) Character key bezeichnet den ASCII Code des gedrückten Zeichens x und y geben die Mausposition bei gedrückter Keyboard-Taste zurück

Keyboardeingaben - glutspecialfunc Für special Keyboard Events, wie F1 oder Pfeiltasten void special(int key, int x, int y) Integer key zum Beispiel: GLUT KEY LEFT x und y geben die Mausposition bei gedrückter Keyboard-Taste zurück

Animationen - glutidlefunc Wird immer dann aufgerufen, wenn der Window-Manager nichts zu tun hat. void idle(void) Für kontinuierliche Animationen in der idle() die display() aufrufen glutpostredisplay()

Anmelden der Funktionen in der main() glutkeyboardfunc(keyboard) glutspecialfunc(special) glutidlefunc(idle)

Flackerfreie Darstellung von Animationen Immer in den Backbuffer rendern Front- und Backbuffer dann tauschen In der main() Doublebuffer anlegen glutinitdisplaymode(glut DOUBLE GLUT RGB) In der display() mit glutswapbuffers() zum Zeichnen aufrufen