Computeranimation Flashcards
Was ist die ISO-Definition der grafischen Datenverarbeitung?
“Methoden und Techniken zur konvertierung von Daten in und aus grafischer Darstellung mit Hilfe von elektronischen Rechenanlagen.”
Was sind die Teilgebiete der Grafischen Datenverarbeitung?
- > Computergrafik
- > Bildverarbeitung
- > Mustererkennung
Was sind die Teilgebiete der grafischen Datenverarbeitung und was sind deren Aufgaben?
Computergrafik:
-> Verfahren zur Eingabe und Manipulation von Bildbeschreibungen sowie deren Umwandlung in grafische Darstellungen
—————————–
Bildverarbeitung:
-> Methoden die nur auf den Bilddaten operieren und versuchen diese entweder zu “verbessern” (nachträgliche Korrektur von Aufnahmen) oder zu “vereinfachen” (Datenreduktion)
————————————-
Mustererkennung:
-> Beschäftigt sich mit den Problemen aus vorliegenden Bilddaten bestimmte Informationen zu gewinnen (z.B. automatisches Sortieren unterschiedleicher Teile, Erkennen von Buchstaben auf Fotos, …) z.B. erkenn Schriften beim Scannen
Was sind die Anwendungsgebiete der Computergrafik?
- > Präsentationsgrafiken (2D/3D)
- > Computerunterstützte Konstruktion und Fertigung (CAD / CAM)
- > Architektur
- > Medizin (Computertomographie)
- > Biowissenschaften (3D-Molekülmodelle)
- > Kartographie
- > …
- > Echtzeit-Bilddarstellungen (Flug- und Fahrsimulation)
- > Computeranimation
Was ist die Definition von Computeranimation?
Erstellung von (fotorealsitischen) dreidimensionalen syntethischen Laufbild-Sequenzen mit Hilfe eines Rechners: -> Oder kurz: Belebte (bewegte) Computergrafik
Was sind die Komponenten eines CA-Systems?
Rechner: -> Aktuelle CPU -> Hochwertige Grafikkarte -> RAM 16GB und mehr -> Plattenspeicher 320 GB -> Monitor ab 24" --------------------------------- Optionales Zubehör: -> Grafik-Tablet -> 3D Scanner -> Scanner -> 3D Drucker -> Vernetzung durch LAN
Was ist das einfache Rastersystem (PC der 1. Generation)?
Ein Teil des RAMs dient als Bildwiederholspeicher. Der Video-Controller zeigt das durch den Bildwiederholspeicher definierte Bild.
Was sind die Vorteile eines einfachen Rastersystems (PC der 1. Generation)?
- > Einfache und dadurch preiswerte Systemarchitektur
- > Die CPU greuft direkt auf den Bildwiederholspeicher zu
Was sind die Nachteile eines einfachen Rastersystems (PC der 1. Generation)?
- > Betriebssystem, Anwendungsprogramm incl. Grafikpaket und Grafiktreiber werden von der CPU ausgeführt
- > Der Grafiktreiber enthält die Prozeduren zur Rasterung, Rasterung durch Software ist langsam
- > Die CPU wird gebremst wenn der Zugriff des Video-Controllers auf den Bildwiederholspeicher über den Systembus erfolgt. Abhilfe: Bildwiederholspeicher als dual ported memory.
Was ist das Rastersystem mit peripherem Grafikprozessor (PC der aktuellen Generation)?
Funktionsweise:
Der Systemspeicher enthält Programme und Daten, die von der CPU ausgeführt werden: Betriebssystem, Anwendungsprogramm inc. Grafikpaket. Der Speicher des Grafikprozessors enthält Programme und Daten für die Rasterung und andere Grafikoperationen (Grafiktreiber). Die Prozessoren kommunizieren über einen speziellen Bereich des Systemspeichers (FIFO-Warteschlange)
———————-
Anwesungen, die von der CPU an den Grafikprozessor übergeben werden: Move, Line, Point, Rect, Text, Circle, Polygon, AreFill, RasterOp, ….
Was sind weitere mögliche Funktionen des Grafikprozessors?
- > Kappung (rechteckiger Teil aus der Gesamtszene)
- > Geometrische Transformationen (Translation, Skalierung, Rotation, …)
- > Ermittlung sichtbarer Flächen (z-Puffer Algorithmus)
- > Rendering (Bildberechnung der 3D-Szene)
Was sind die Nachteile eines Grafikprozessors?
- > Die kommunikation der Prozessoren über einen gemeinsamen Bereich des Systemspeichers ist aufwändig und langsam
- > Die CPU kann nicht direkt auf den Bildwiederholspeicher zugreifen
Was ist ein Rastersystem mit integirertem Grafikprozessor?
Funktionsweise: Durchgehender Adressraum (SAS: single adress space), Bildwiederholspeicher als dual ported memory ist Bestandteil des RAMs.
Was sind die Vorteile bei Rastersystemen mit integriertem Grafikprozessor?
-> Die CPU kann direkt auf den Bildwiederholspeicher zugreifen
Was sind die Nachteile bei Rastersystemen mit integriertem Grafikprozessor?
- > Konkurrenz der Prozessoren beim Speicherzugriff. Abhilfe: Cache-Speicher für die CPU
- > Adressrechnung um Fall von Betreibssystemen mit virtuellen Adressräumen
Was sind die Forderungen an den Algorithmus?
- > Möglichst effiziente Implementierung (Integer-Operation anstelle von Real Operationen) und dadurch möglichst kurze Laufzeit des Algorithmus
- > Dadurch ist eine einfache Hardware-Implementierung möglich
- > Ausgewählte Pixel sollen so nahe wie möglich an der Ideallinie liegen und möglichst geradlinig verlaufen
- > Bei Linien mit einer Steigung zwischen -1 und +1 soll genau ein Pixel in jeder Spalte gesetzt werden
- > Bei Linien mit anderer Steigung soll genau ein Pixel in jeder Zeile gesetzt werden
- > Konstante Helligkeit der Linie unabhängig von der Steigung
Erkläre den Basisalgorithmus mit Worten zur darstellung einer Linie.
Es sind zwei Punkte mit jeweils x und y koordinate gegeben. Es soll nun eine gerasterte Linie zwischen den beiden Punkten dargestellt werden.
Bestimmen lässt sich diese Strecke mit einer Geradengleichnung. Man kann mit den beiden Koordinaten der Punkte die Steigung berechen sowie den Y-Achsenabschnitt.
Zum Zeichen der Gerade wird dann von der linken X-Koordinate des linken Punkts gestartet und für jedes X (jede Pixelspalte) bis zum Endpunkt durchgangen. X wird also bei jedem Schritt um 1 erhöht.
Bei jedem Schritt wird dann der Pixel gesetzt und somit wird eine gerade erstellt-
Erkläre den Basisalgorithmus mit mathematischen Beispielen.
-> Gegeben: P0(x0,y0) und P1(x1,y1)
-> Gesucht: Gerasterte Linie von P0 nach P1
-> Geradengleichung:
y = mx + b
mit Steigung m und Y-Achsenabschnitt b
——————————
Einfachstes Verfahren:
->Berechne:
m = delta(y)/delta(x) = (y1-y0)/(x1-x0)
->Berechne:
b = y0-mx0
——————————-
-> Erhöhe x ausgehend von x0 jeweils um 1
-> Berechne yi = mxi + B für jedes xi
->Setze Pixel (xi, Round(yi)), wobei Round (yi) = Floor (0,5 + yi) und die Funktion Floor(y) die nächste ganze Zahl <= y liefert
Was sind die Nachteile des Basisalgorithmus?
- > Falls |m| > 1 liefert der Algorithmus nicht in jeder Zeile ein Pixel; Problemlösung durch Fallunterscheiungen: Falls |m| > 1 Berechnung von x = f(y)
- > Für jede Iteration ist eine Multiplikation und eine Addition zweier Gleitkommazahlen sowie ein Aufruf von Floor nötig (ineffizient)
Erkläre den inkrementellen Algorithmus mit Worten.
Der Inkrementelle Algorithmus basiert mehr oder weniger auf dem Basisalgorithmus. Es werden wieder beide Punkte gesetzt und gesucht ist eine gerasterte Linie zwischen ihnen.
Es wird wieder die Steigung berechnet, der y-Achsenabschnitt ist hier allerdings unnötig.
Es wird der erste Punkt betrachtet und wieder mit Round(yi) auf den nächstgelegenen Pixel gerundet.
Nun wird allerdings nicht wie beim Basisalgorithmus ein “Schnittpunkt” berechnet, sondern sondern einfach auf den breits gerechneten ersten Punkt wird die Steigung dazu gerechent. Es wird also immer auf die x-Koordinate 1 dazu gerechnet und auf die y-koordinate wird die steigung darauf gerechnet . Dann wird wieder mit Round(yi) auf den Pixel gerundet. Dies wird so lange gemacht, bis die End-X-Koordinate erreicht wird.
Erkläre den Inkrementellen Algorithmus mit mathematischen Beispielen.
-> yi+1 = mx+1 +B
-> yi+1 = m(xi + delta x) +B
-> yi+1 = mxi + B + mdelta x <==> mit yi = mxi +B
-> yi+1 = yi + m * deta x
———————————
Falls delta x = 1 gilt:
-> yi+1 = yi +m
———————————
-> Für alle Punkte (xi, yi) auf der Geraden gilt: Wenn x(i+1) = xi+1, so ist yi+1 = yi +m. Die Werte von x und y werden mit Hilfe der zuvor berechneten Werte definiert => inkrementeller Algorithmus
—————————-
Dieser inkrementelle Algorithmus wird oft auch als DDA (digital differential analyzer) bezeichnet, weil in jedem Schritt x um 1 und y um die erste Ableitung m=dy/dx erhöht wird.
Was sind die Vorteile des inkrementellen Algorithmus?
-> Eliminierung der Multiplikation
-> Eine Fallunterscheidung für horizontale, vertikale und Linien mit |m| > 1 ist notwendig. Falls |m| > 1 gilt:
Wenn yi+1, so ist xi+1 = xi + 1/m
Was sind die Nachteile des inkrementellen Algorithmus?
- > Rundungsfunktion
- > Die Variablen y und m sind Gleitkommazahlen
Was ist die Zielsetzung des Bresenham Algorithmus?
-> Ganzzahlige Arithmetik (Integer-Operationen und daruch keine Rundungsfunktion)
Erkläre den Bresenham-Algorithmus in Worten.
Der Basis-Algorithmus benötigt mehrere Gleitkommarechnungen sowie eine Addition, schön wäre es, wenn wir einen Algorithmus angeben könnten, welcher mit ganzen Zahlen auskommt, sowie eine Rundung überflüssig macht. Hier ist der Bresenham-Algorithmus verwendbar.
- > Dieser Algorithmus arbeitet rekursiv, d.h. er berechnet das nächste Pixel immer basierend auf dem vorherigen Pixel
- > Zur Vereinfachung betrachten wir nun den Fall einer Linie, mit einem Winkel zwischen 0° und 45°, beginnend im Punkt (0,0). Desweiteren gehen wir davon aus, dass die Endpunkte durch ganzzahlige Pixel beschrieben werden.
- > Wenn als letztes das Pixel (x,y) gezeichnet wurde, dann kommen für die Folgepixel nur (x+1,y) oder (x+1, y+1) in Frage. Also das Nordöstliche oder Östliche Pixel. Daher benötigen wir ein Entscheidungskriterium, welches Pixel gemalt werden soll: Wir berechen also den Abstand (E) der Linie von Punkt (x+1, y+ 1/2), also den Mittelpunkt zwischen den beiden nächtmöglichen Pixeln. Wenn E positiv ist, muss als nächstes der obere Pixel gesetzt werden (x+1, y+1), anderenfalls das untere Pixel (x+1, y).
Erkläre den Bresenham-Algorithmus an mathematischen Beispielen.
Verwendete Variablen:
-> P(xp, yp): zuletzt gewähltes Pixel bzw. Startpixel
-> E/NE: Wahlmöglichkeit für das nähste Pixel bzw. Startpixel
-> Q: Schnittpunkt der Linie mit der Gitterline x=xp+1
-> M: Mittelpunkt: M(xp+1, yp+1)
-> d: Entscheidungsvariable (d>0 = NE, d<=0 = E)
——————————–
Mathematische Formeln:
y = mx + B = dy/dx * x + b
==> Geradengleichung
F(x,y) = dyx - dx * y + B dx = 0
oder
F(x,y) = ax + b*y + c
==> Implizite Form
————————————-
-> Für einen Punkt (x,y) auf der Linie wird F(x,y) = 0
-> Bei Punkten (x,y) oberhalb der Linie wird F(x,y) < 0
-> Bei Punkten (x,y) unterhalb der Linie wird F(x,y) > 0
———————————–
Entscheidungsvariable d = F(M):
d = F(M) = F(xp + 1,yp + 1/2) = a(xp + 1) + b(yp + 1/2) + c
–
-> Liegt M unterhalb der Linie: d > 0 = NE
-> Liegt M oberhalb der Linie: d < 0 = E
-> Liegt M auf der Linie: d = 0 = E
Wie funktioniert die Inkrementelle Berechnung der Entscheidungsvariablen d?
-> Wurde E gewählt, ist d(neu) = F(M´).
……………..
d(neu) = F(M´) = F(xp + 2,yp + 1/2) = a(xp +2 ) + b(yp + 1/2) + c
………………
d(alt) = F(M) = F(xo + 1,yp + 1/2) = a(xp + 1) + b(yp + 1/2) + c
……………….
d(neu) - d(alt) = a
d(neu) = d(alt) + a mit a = dy = delta E
————————–
-> Wurde NE gewählt, ist dneu = F(M´´).
…………..
d(neu) = F(M´´) = F(xp + 2,yp + 3/2) = a(xp + 2) + b(yp + 3/2) + c
…………
d(alt) = F(M) = F(xp + 1, yp+1/2) = a(xp + 1) + b(yp + 1/2) + c
………….
d(neu) - d(alt) = a+b
d(neu = d(alt) + (a+b) mit a+b = dy -dx = delta NE
————————–
-> Startwert von d:
d(start) = F(x0 + 1,y0 + 1/2) = a(x0 + 1) + b(y0 + 1/2) + c
………..
d(start) = ax0 + bx0 + c + a + b/2
……….
d(start) = F(x0, y0) + a + b/2
——————————
Da der Startwert (x0, y0) auf der Linie liegt, ist F(x0, y0) = 0 und
d(start) = a + b/2 = dy + dx/2
…………
Um den Bruch in d(start) loszuwerden wird F(x,y) mit 2 multipliziert. Es gilt:
…….
d(start) = 2dy - dx
delta E = 2dy
delta NE = 2(dy - dx)
————————
Das Vorzeichen der Entscheidungsvariablen d ändert sich dadurch nicht.
Was sind die Vorteile des Bresenham-Algorithmus?
- > Nur eine ganzzahlige Addition in jedem Schritt
- > Keine Multiplikation, keine Rundung
- > Algorithmus ist sehr effizient (optimaler Algorithmus)
Was sind Probleme aller Rasterungs-Algorithmen?
- > Veränderung der Intensität bei Linien unterschiedlicher Steigung: Diagonale Linien haben z.B. nur eine Intensität von I / (Wurzel)2 wenn die Intensität pro Längeneinheit einer horizontalen Linie ist. (Abhilfe: Antialiasing)
- > Dem Bresenham-Algorithmus entsprechend gibt es effiziente Algorithmen zur Rasterung von Kreisen und Ellipsen. Diese sind Mathematisch etwas aufwändiger und deshalb nicht Gegenstand dieser Vorlesung :)
Was ist Aliasing und wo kann es auftreten?
Aliasing kann beim Übergang von kontinuierlichen Signalen (beliebiger Wert aus endlichem Intervall) zu diskreten Signalen (endliche Wertemenge) auftreten.
Was sollte man beim Übergang von Kontinuierlichen zu diskreten Signalen beachten um Aliasing zu vermeiden?
- > Beim Übergang von kontinuierlichen (analogen) zu diskreten (digitalen) Signalen muss das Shannon´sche Abtasttheorem eingehalten werden.
- > Mindestens mit der doppelten Frequenz abtasten.
Was sind gründe für Aliasingeffekte bei Bildschirmen?
- > Technik der Rasterschirme
- > Strukturen im Bild sind feiner als die Auflösung des Monitors (Unterabtastung)
Wie kann ein Bildschirm gegen das Standbildaliasing vorgehen und was sind die Nachteile?
Nachteile:
-> Teuere Lösung (der Bildschirm hat die vierfache Anzahl an Pixeln, der Bildwiederholspeicher ist vier mal so groß)
-> Physikalische Grenzen
Was bringen Bereichsmittelwerte ohne Gewichtung (unweighted area sampling) um Aliasing zu vermeiden?
- > Der Grauwert (die Farbsättigung) eines Pixels wird proportional zu der von dem Rechteck der Linie überdeckten Fläche des Pixels eingestellt
- > Gewichtsfunktion hierbei Fläche (2D) bzw. Quader (3D)
- > Es wird also quasi um die ursprünliche Linie ein rechteck gezeichnet
Was besagt die Filtertheorie beim Antialiasing?
-> Bessere Ergebnisse (geringerer Kontrast zwischen benachbarten Pixeln und dadurch weichere Übergänge) wenn Flächenanteile nahe am Mittelpunkt eines Pixels stärker gewichtet werden.
Was bringen Bereichsmittelwerte mit Gewichtung (wighted area sampling) um Aliasing zu vermeiden?
-> Pixel werden als sich überlappende Kreisflächen betrachtet
-> Die Gewichtungsfunktion (Filterfunktion) ist ein Kegel
-> Das Kegelvolumen ist auf 1 normiert (maximale Intensität)
-> Intensität eines Pixels : I = Imax * Wa mit Wa = Teilvolumen des Kegelschnitts
-> Einfache Integration von Kegelfiltern in Rasteralgorithmen, optimale Filter sind mathamatisch aufwändig
==> je weiter in der mitte des Pixels der skalierte punkt liegt, desto dunkler (heller) wird der Pixel dargestellt
Was ist die Zielsetzung und Forderung an die Approximation von Kurven.
- > Zielsetzung: Freihandkurven
- > Approximation = Annäherung
- > Forderung: Glatte Kurven als Verbindung vorgegebener Punkte (Stützpunkte)
Was sind Polynome?
-> durch n vorgegebene Punkte lässt sich ein Polynom (n-1)-ten Grades legen:
y = f(x) = a(n-1) x^n-1 + a(n-2) x^n-2 + … + a2 x^2 + a1 x + a0
………..
n = 2: Gerade; n = 3: Parapel
Was sind die Nachteile von Polynomen?
- > Kurve oszillliert meistens zwischen den Stützpunkten
- > Es kann also variieren wie stark sie gekurvt sind
Was sind Splines? Und was sind die Nachteile der verschiedenen Arten von Splines?
-> Stückweise polynominelle Kurven
-> Geraden (Polynome 2-ten Grades) durch jeweils drei Stützpunkte.
……….
Nachteil: Eckiger Linienzug
——————————-
-> Parapeln (Polynome 2-ten Grades) durch jeweils dreo Stützpunkte
………
Nachteil: Ecken an den Intervallgrenzen, d.h. keine C1-Stetigkeit
Was besagt der Grad der Stetigkeit zwischen zwei Kurvensegmenten?
Zwischen zwei Kurvensegmenten gilt:
- > C0: gleiche Funktionswerte, ungleiche 1. Ableitungen
- > C1: gleiche Funktionswerte, gleiche 1. Ableitung, ungleiche 2. Ableitungen
- > C2: gleiche Funktionswerte, gleiche 1. Ableitung, gleiche 2. Ableitung
Was sind Kubische Splines?
Für die Appromaxion einer Kurve f(x), die durch n vorgegebenen Punkten verlaufen soll, wird die Funktion in n-1 Intervalle zerlegt und in jedem Teilintervall x (Element von) [xi, xi+1] durch ein Polynom 3-ten Grades fi(x), i = 1, … , n-1 dargestellt.
Was sind die Vor- und Nachteile von Kubischen Splines?
Vorteil: -> C2-Stetigkeit an Intervallgrenzen ------------------------ Nachteil: -> Mathematisch sehr aufwändig
Was sind Bézierkurven?
Methode von Pierre Bézier, der sie 1972 zur Modellierung von Oberflächen bei Karosserieentwurf bei Renault (CAD) entwickelt hat.
- > Jedes Bézier-Kurvensegment besteht aus z.B. vier Punkten Pi (Element von) [0,3]
- > zwei Stützpunkte (P0, P3): Definieren Anfang und Ende der Kurve
- > zwei Kontrollpunkte (P1, P2): Steuern den Lurvenverlauf und liegen nicht auf der Kurve
- > Parametrisierte Darstellung: P(t) = (x(t) (über) y(t)), 0 <= t <= 1
Was sind die Vorteile von Bezierkurven?
- > Es können nucht nur Funktionen y = f(x) (jedem x genau ein Funktionswert y) sindern auch Relationen und damit jede beliebige Kurve, dargestellt werden.
- > Also auch Kreise!
Was sind Bernsteinpolynome?
Wenn für vier Punkte P(i)i (ELEMENT VON) [0,3], gilt:
…..
P(t) = (1-t)^3 * P(o) + 3t * (1-t)^2 * P(1) + 3t^2 * (1-t) * P(2) + t^3 * P(3)
0 <=t <=1
…..
P(t) = B(0,3) (t) * P(o) + B(1,3)(t) * P1 + B(2,3)(t) * P2 + B(3,3)(t) * P3
0 <= t <= 1
——————————–
Die Bernsteinpolynime Bi,n(t) definieren den Einfluss der Punkte auf den Kurvenverlauf: Für t=0 ist nur B(0,3)(t) != 0, deshalb geht die Kurve durch P0, für t=1 ist nur B(3,3) (t) != 0, deshalb geht die Kurve durch P3
Was ist die Formel für Bernstein-Polynome?
P(t) = (1-t)^3P0 + 3t(1-t)^2P1 + 3t^2(1-t)P2 + t^3P3
Was sind die Eingenschaften von Bernsteinpolynomen?
- > Im Anfang- und Endpunkt ist die Kurve tangential zum Kontrollpolygon
- > C1-Stetigkeit an den Verbindungspunkten der Kurvensegmente durch Ausrichtung der Tangenten (bzw. Setzen der Punnkte auf eine Gerade)
- > Kurve liegt innerhalb der konvexen Hülle der Stütz-/ Kontrollpunkte (Kappungsalgorithmus)
- > Nur globale Kontrolle des Kurvensegments: Da alle Bernsteinpolynome für 0 Geschlossene Kurven durch Mehrfachpunkte z.B. P0 = P3
Was sind B-Splinekurven?
-> B = Basis
-> Verallgemeinerung von Bézierkurven
-> Die definition der B-Splinekurve P(t) vom Polynomgrad k-1 (k ist wählbar) erfolgt über n+1 Punkte Pi(t) = (x(t) (über) y(t)), 0 <= t <= n-k + 2
——————-
Für fünf Punkte Pi, i (Element von) [0,4], n = 4 und k = 3 gewichten die fünf Polynome N(i,k)(t) vom Grad k-1 den Einfluss der Punkte auf dem Kurvenverlauf
———————
Lokalitätseigenschaft:
-> N(0,3)(t) ist nur im Bereich t (Element von) [0,1] != 0 ==> der Startpunkt P0 beeinflusst nur diesen Wertebereich von t den Kurvenverlauf
Was sind die Eigenschaften von B-Splinekurven?
- > C^(k-2)-Stetigkeit an den Verbindungspunkten der Kurvensegmente ist möglich (bei entsprechender Wahl der Punkte)
- > Kurve liegt innerhalb der konvexen Hülle der Stütz-/Kontrollpunkte (Kappungsalgorithmus)
- > Lokale Kontrolle
- > Durch Mehrfachpunkte sind Ecken (Bereiche starker Krümmung) darstellbar
Was sind NURBS?
-> Non Uniform Rational B-Splines = Nicht gleichmäßige Rationale B-Splines
-> erweiterung der B-Splines
-> Nicht gleichmäßig: Die Punkte d(i) werden mit Gewichten w(i) multipliziert
————————–
Rational:
-> rationale Funktionen f(x) = g(x)/h(x) mit g(x), h(x):Polynome
Was sind die Vorteile von NURBS im Vergleich zu Bézierkurven / B-Splinekurven?
- > Exakte Darstellung von Kegelschnittfunktionen (kreisen), ansonsten nur Approximation CAD/CAM
- > Invarianz der Kontrollpunkte unter Translation, Skalierung, Rotation und Zentralprojektion, d.h. Unveränderlichkeit des Kurvenverlaufs unter diesen Operationen.
Was sind Vektoren?
- > Allgemein: Ein Vektor ist der n-Tupel reeller Zahlen
- > Werden in der Computergrafik verwenden um Positionen von Punkten im Weltkooridnatensystem darzustellen
Was sind Matritzen?
- > Allgemein: Eine Matrix ist ein n x m -Tupel reeller Zahlen
- > Werden in der Computergrafik u.a. für die Durchführung geometrischer Transformationen verwendet.
Wie funktioniert eine Matrizenmultiplikation?
Sei A eine n x m Matrix (a(ij)) und B eine m x p Matrix (b(ij)). Das Produkt C = A * B ergibt eine n x p Matrix
…..
c(ij) = (SUMME; oben m, unten a =1) a(is) * b(sj)
———————–
Die Anzahl der Spalten von A muss gleich der Zeilen von B sein.
Wie funktioniert die Translation (Verschiebung) im zweidimensionalen Raum?
Verschiebung von Punkten (x,y) in der (x,y)-Ebene um die Beträge dx, dy auf die neuen Punkte P´(x´,y´): ....... x´ = x + dx, y´ = y + dy P´ = [x´(über) y´], P = [x (über ) y], T = [d(x), d(y)] ....... P´ = P + T (Vektoraddition)
Wie funktioniert die Skalierung im zweidimensionalen Raum?
Skalierung von Punkten um die Faktoren s(x), s(y): ..... x´ = s(x)*x, y´ = s(y) * y P´ = [x´ (über) y´], P = [x (über) y] ...... S = [s(x) 0] [0 s(y)] P´ = S*P (Matrizenmultiplikation) ...... Mit x´= s(x) * x + 0 * y, y´ = 0*x + s(y) * y ------------------------------ Falls s(x) = s(y): Uniforme Skalierung (Proportionen bleiben erhalten)
Wie funktioniert die Rotation im zweidimensionalen Raum?
Drehung von Punkten um den Qunkel Q: ...... x´ = x * cos(Q)-y * sin(Q) y´ = x * sin(Q) + y * cos(Q) ..... P´ = [x´ (über) y´] P = [x (über) y] R= [cos(Q) -sin(Q)] sin(Q) cos(Q) ..... P´ = R * P (Matrizenmultiplikation ----------------- Mit: x´ = cos(Q)*x - sin(Q)*y y´ = sin(Q)*x + cos(Q)*y
Was geschieht bei der Skalierung im zweidimensionalen raum noch, außer dass sich die Größe verändert?
Auch die Distanz vom Ursprung wird von mit dem Faktor vergrößert oder verkleinert, also verschoben.
Was geschieht bei der Rotation im zweidimensionalen Raum noch, außer dass das Objekt gedreht wird?
Das Objekt verschiebt sich um den Ursprung herum, also es verändert auch seine Position
Wie kann man die Translation, Rotation und Skalierung vereinheitlichen? Was bringt das?
-> Einheitliche Berechnung aller Transformationen = alle Unternehmungen könne gleich behandelt werden.
-> Durch 3x3 Matritzen.
(die klammern die untereinander stehen sind eigentlich eine hier)
——————————–
Translation
……
[x´] = [1 0 d(x)] * [x]
[y´] = [0 1 d(y)] * [y]
[1 ] = [0 0 1 ] * [1 ]
———————————
Skalierung
……
[x´] = [s(x) 0 0] * [x]
[y´] = [0 s(x) 0] * [y]
[1 ] = [0 0 0] * [1 ]
——————————–
Rotation
……
[x´] = [cos(Q) -sin(Q) 0] * [x]
[y´] = [sin(Q) cos(Q) 0] * [y]
[1 ] = [0 0 1] * [1]
Was ist die Zielsetzung von zusammengesetzten Transformationen?
-> Steigerung der Effektivität, wenn eine Reihe von Transformationen auf mehrere Punkte (ein Objekt) angewandt wird.
Wie wird bei zusammengesetzen Transformationen vorgegangen?
Vorgehenweise: 1. Verschiebe P1 zum Ursprung 2. Rotiere um den Winkel Q 3. Verschiebe zum ursprünglichen P1 ----------------------------- Berechnung einer Transformtaionsmatrix und Anwednung dieser Matrix auf alle Punkte des Objekts
Was ist bei zusammngesetzten Transformationen zu beachten?
-> Im allgemeinen ist die Matritzenmultiplikation nicht kommunitativ, d.h. M1M2 != M2M1. Die Kommunikativität gilt nur in wenigen Sonderfällen (sonst muss die Reihenfolge beachet werden!)
Was ist das Weltkoordinatensystem?
Koordinatensystem, in dem der Anwender die Objekte seiner künstlichen Welt platziert (beliebige Einheiten von Nanometer bis Lichtjahre)
Was sind die Bildschirmkoorrdinaten?
- > Matrix der Bildpunkte des Monitors (n Zeilen x m Spalten), entspricht dem Bildwiederholspeicher.
- > Die Abbildung eines teils des Weltkoordinatensystems (Window = Kamerasichtfenster) auf einen Bereich des Bildschirms (Viewport) nennt man Window-Viewport-Transformation
Wie wird bei der Window-Viewport-Transformation vorgegangen?
- > Window in Weltkoordinaten
- > Window verschoben zum Ursprung
- > Window sklaiert auf die größe des Viewports
- > Verschiebung um Koordinaten in jeweilige und endgültige Position
Was ist die Kappung (Clipping)?
Die außerhalb des Windows liegenden grafischen Infromationen werden abgeschnitten.
Was für möglichkeiten der Kappung gibt es?
- > Analytisch: Berechnung der Schnittpunkte von Polygonkanten mit dem Kappungsrechteck (Cohen-Sutherland-Algorithmus)
- > Während der Rasterung: Es werden nur die Pixel gerastert, die innerhalb des Kappungsrechtecks liegen
- > Kappung am Window: Bei der Window-Viewport-Transformation (implizit)
Wie können alle Transformationen im dreidimensionalen Raum berechnet werden?
Einheitliche Berechnung aller Transformationen um dreidimensionalen Raum erfolgt durch die Verwendung von 4x4 - Matrizen: P´ = M * P ------------------------------------ mit: ..... P´ = [x´] [y´] [z´] [1 ] ...... M = [m(11) m(12) m(13) m(14)] [m(21) m(22) m(23) m(24)] [m(31) m(32) m(33) m(34)] [m(41) m(42) m(43) m(44)] ...... P = [x] [y] [z] [1]
Wie kann man die Bildschirmpunkte berechnen, bzw was ist die Formel dafür?
P´ = ((x-x(min)) * (u(max) - u(min))/(x(max) - x(min)) + u(min)*(y - y(min)) * (u(max)-u(min))/(y(max) - y(min)) + v(min) 1)
Wie sieht eine 4x4 Matrix für die Translation im 3-dimensionalen Raum aus?
T(dx,dy,dz) = [1 0 0 dx] [0 1 0 dy] [0 0 1 dz] [0 0 0 1 ]
Wie sieht eine 4x4 Matrix für die Skalierung aus?
S(sx, sy, sz)= [sx 0 0 0] [0 sy 0 0] [0 0 sz 0] [0 0 0 1]
Wie sieht eine 4x4 Matrix für die Rotation um die X-Achse aus?
R(x)(Q) = [1 0 0 0] [0 cos(Q) -sin(Q) 0] [0 sin(Q) cos(Q) 0] [0 0 0 1]
Wie sieht eine 4x4 Matrix für die Rotation um die Y-Achse aus?
R(y)(Q) = [cos(Q) 0 sin(Q) 0] [0 1 1 0] [0 0 0 0] [-sin(Q) 0 cos(Q) 0]
Wie sieht eine 4x4 Matrix für die Rotation um die Z-Achse aus?
R(z)(Q) = [cos(Q) -sin(Q) 0 0] [sin(Q) cos(Q) 1 0] [0 0 1 0] [0 0 1 0]
Was ist bei zusammengesetzten Transformationen im dreidimensionalen raum zu bachten?
Da die Matrizemultiplikation nicht kommunitativ ist: Reihenfolge beachten!
Was ist eine inverse Matrix?
Es gibt das Weltkoordinatensystem und jedes Bauteil hat noch quasi ein “eigenes” kleines Koordinatensystem, mit dem es um die eigenen Achsen rotieren kann und sich nicht um den Ursprung dreht. Die Inverse Matrix verläuft (bzw. das Koordinatensystem) parallel.
Was ist die Definition einer Inversen Matrix?
Sind A und B n x m - Matrizen und gilt AB = BA = E mit E = Einheitsmatrix mit einsen auf der Diagonalen, sonst alles 0, so ist die inverse Matrix von B A, die mit A^-1 bezeichnet wird.
Was für Darstellungsmodelle dreidimensionaler Objekte gibt es?
Darstellungsform, bei der die Gestalt aufgebaut ist:
- > Drahtmodell (Gittermodell) aus Liniensegmenten (Kanten).
- > Flächenmodell aus Flächenelementen (Polygonen)
- > Körpermodell (Volumenmodell) aus Körpersegmenten
Was ist ein Translationskörper?
Ein Körper, der entlang einer Achse entweder Rotiert oder verschoben wird. Die “Spur”, die dabei entsteht, wird dann als neuer Körper mit Fläche definiert.