BTU Cottbus
Institut für Informatik
Prof. Dr. W. Kurth, Dr. E. Roth
Computergraphik, WS 2001/02
Übungsblatt 0
(keine Abgabe, keine Wertung)
Aufgabe 1 (Koordinatendarstellungen geometrischer
Objekte)
(a) Zeichnen Sie die Menge, die durch

beschrieben wird.
Geben Sie Beschreibungen in Mengenschreibweise an für
(b) das Dreieck mit den Eckpunkten (0; 1), (4; 0) und (2; 5),
(c) einen zur z-Achse parallelen Zylinder
mit aufgesetzter Halbkugel: Der Mittelpunkt der Zylinder-Grundfläche
sei (x0, y0, z0),
die Höhe des Zylinders h, die Radien beider Körper
seien r.
Aufgabe 2 (Geradendarstellung)
Welche Formen der Geradengleichung im R2 sind Ihnen
geläufig? Welche Ausnahmefälle wären bei einer
Implementation als Zeichenalgorithmus jeweils abzufangen? Sind
spezielle Geraden nicht darstellbar?
Aufgabe 3 (lineare Abbildungen und Matrizen)
Die folgenden Transformationen der Ebene sind lineare Abbildungen:
f1: Spiegelung an der Winkelhalbierenden y =
x ;
f2: Rotation um den Winkel
a
um den Koordinatenursprung;
f3: isotrope, zentrische Streckung um den Faktor
c (¹
0) vom Ursprung aus;
f4: Scherung entlang der x-Achse mit
;
f5: Projektion entlang der Winkelhalbierenden
y = x auf die y-Achse.
- Welche fi sind flächentreu,
welche sind singulär? Geben Sie im letzteren Fall Kern und
Bildraum an.
- Geben Sie für jede der Transformationen die Matrix-Darstellung
Mi an. (Spaltenvektor-Notation:
.)
- Berechnen Sie die Matrix der Komposition
f1°
f2°
f4.
- Bestimmen Sie die inverse Matrix zu M4.
Aufgabe 4 (Ellipsendarstellung)
- Wie lautet die Achsenabschnittsform der Ellipsengleichung
(Hauptachsen = Koordinatenachsen, Mittelpunkt im Ursprung) in
kartesischer Form und in Parameterform
(Parameter a
= Winkel im Ursprung)?
- Wie lautet die Parametergleichung einer um den Winkel
b
gedrehten Ellipse mit Mittelpunkt (x0,
y0)?
- Welchen Nachteil hat die Verwendung der Parameterform mit
äquidistanter Wahl von Parameterwerten
a
zwischen 0° und 360° beim Zeichnen von Ellipsen durch
Annäherung mit Geradensegmenten?
Aufgabe 5 (Rasterdarstellung von Geraden)
Es soll die Strecke zwischen (x1, y1)
und (xn, yn) in einem Raster
(Pixelgraphik) gezeichnet werden. O.B.d.A. seien Länge und
Höhe eines Pixels = 1, die Steigung m der darzustellenden
Linie (
) liege zwischen 0 und 1,
es sei x1 < xn.
set_pixel(x,y,v) sei eine
Bibliotheksfunktion in C, die Pixel (x, y) auf den
Intensitätswert v setzt.
- Man betrachte den folgenden
"naiven" Algorithmus zum Zeichnen der Linie, der
für alle ganzzahligen x-Werte xi
zwischen x1 und xn den Wert
yi = mxi + b berechnet
und das Pixel (xi,
round(yi))
setzt:
void line(int x1, int y1, int xn, int yn, int v)
{
int x; float m, b;
m = ((float)(yn-y1))/(xn-x1);
b = y1 - m*x1;
for (x=x1; x<=xn; x++)
set_pixel(x, round(m*x+b), v);
}
Wieviele Floating-Point-Operationen (und welche) gibt es in der
Schleife?
- Man entwickle eine erste Verbesserung durch Ausnutzung von
yi+1 = yi + m
("inkrementeller Algorithmus").
Was hat sich hinsichtlich der Komplexität verbessert?
- Die Rundungsoperation
(round) lässt sich durch
Einführen einer Variablen error
vermeiden. Wenn (x, y) das zuletzt gesetzte Pixel ist,
soll error angeben, um wieviel das
Pixel (x+1, y) von der idealen Linie abweicht.
error erhöht sich bei jedem
Schritt zunächst um m. Wenn
error £
0,5 ist, liegt (x+1, y) näher an der idealen Linie
als (x+1, y+1) und wird daher gesetzt. Sonst wird
(x+1, y+1) gesetzt und
error zusätzlich um 1
vermindert. Formulieren Sie hiermit eine weitere Verbesserung
der obigen C-Funktion.
- (Bresenham-Algorithmus) Eliminieren Sie nun
die Floating-Point-Operationen gänzlich, indem Sie m,
error und die zugehörige
Auswahlbedingung für die Pixel mit dx =
xn - x1 skalieren und
dx/2 durch den Integerwert floor(dx/2)
ersetzen.
Zur Startseite der Vorlesung
Letzte Änderungen: 07. 10. 2001