Malen mit Zahlen, Teil 2 – Transformationen und Matrizen

Auch dieser Teil ist wieder gemeinsam für Rasterung/Schattierung und Raytracing.

Um Objekte im Raum zu platzieren, müssen wir die Koordinaten ihrer Eckpunkte angeben. Für ein kompliziertes Objekt aus vielen Punkten, das irgendwie im Raum verdreht ist, kann das kompliziert werden. Meistens ist es einfacher, die Punkte des Objekts in einer »Standardlage« anzugeben. Von dort aus können wir es in die gewünschte Lage »transformieren«.

Weiterlesen „Malen mit Zahlen, Teil 2 – Transformationen und Matrizen“

Komplexe Zahlen, Teil 8 – räumliche Schwingungen und Wellen

In Teil 6 der komplexen Zahlen und den bisherigen Teilen zur Fourier-Reihe haben wir uns mit zeitabhängigen Sinus-Funktionen, also zeitlichen Schwingungen, beschäftigt. In diesem Teil soll es um räumliche Schwingungen gehen – in einer und mehr Dimensionen. Den Abschluss bilden dann harmonische Wellen, also Schwingungen, die sich mit der Zeit im Raum ausbreiten.

Abb. 1 zeigt noch einmal eine sinusförmige Schwingung in der Zeit. Wir können sie uns als die Projektion eines rotierenden Zeigers vorstellen, dessen Winkel von der Zeit t abhängt.

Abb. 1: eine sinusförmige Schwingung in der Zeit.

Räumliche Schwingungen in 1D

Wir könnten uns aber auch vorstellen, dass der Winkel des Zeigers nicht von der Zeit t, sondern vom Ort x abhängt. Wie Abb. 2 zeigt, ergibt die Projektion dann eine Sinus-Funktion entlang der x-Achse.

Abb. 2: eine sinusförmige Schwingung entlang der x-Achse.
Weiterlesen „Komplexe Zahlen, Teil 8 – räumliche Schwingungen und Wellen“

Malen mit Zahlen, Teil 1 – Warum funktioniert das Lochkameramodell so gut?

Zwischendurch ein kleine Abschweifung in die geometrische Optik, die für Rasterung/Schattierung und Raytracing gleichermaßen zutrifft.

In Teil 0 haben wir die (inverse) Lochkamera besprochen und wie man damit perspektivische Abbildungen erzeugen kann. Wir sehen die Welt aber mit unseren Augen, die keine Lochkameras sind, sondern eine Linse haben. Ebenso haben (Film-)Kameras mehr oder weniger aufwendige Linsensysteme. Warum funktioniert unser Lochkameramodell dann so gut?

Weiterlesen „Malen mit Zahlen, Teil 1 – Warum funktioniert das Lochkameramodell so gut?“

Malen mit Zahlen, Teil RS2 – Drahtgittermodelle

Im letzten Teil haben wir nur Punkte gemalt. In dieser Folge zeichnen wir endlich Linien im Raum. Das ergibt Bilder wie in Abb. 1, in dem die Kanten von drei Würfeln und Breiten-/Längenkreise auf einer Kugel zu sehen sind. Wenn wir Würfel aus kleinen Drahtstücken zusammenlöten, sehen sie so ähnlich aus wie in Abb. 1. Man spricht daher von Drahtgitter- bzw. Wireframe-Modellen.

Abb. 1: Ein paar Drahtgitter-Modelle im Raum.

Punkte haben wir schon projiziert, aber wie projizieren wir Linien im Raum auf den Schirm?

Weiterlesen „Malen mit Zahlen, Teil RS2 – Drahtgittermodelle“

Malen mit Zahlen, Teil RS1c – Der Code für Kamera und Punkte

Dieser Beitrag liefert den versprochenen Code zum Teil RS1. Geschrieben habe ich ihn in Processing, das im Wesentlichen ein vereinfachtes Java mit ein paar Goodies ist.

Warum Processing?

Normalerweise veranstalte ich Tagesevents zu 3D-Computergraphik in der letzten Schulwoche. Unsere Schüler können dabei frei aus Events wählen und auch der Klassenverband ist dann aufgelöst. Ich habe also 20+ Teilnehmer aus unterschiedlichen Jahrgängen, Abteilungen und natürlich mit unterschiedlichen Laptops und Betriebssystemen. Manche haben unter Windows noch nie die Kommandozeile gesehen …

Weiterlesen „Malen mit Zahlen, Teil RS1c – Der Code für Kamera und Punkte“

Malen mit Zahlen, Teil RS1 – Kamera und Punkte

Das ist der erste Teil der Serie über 3D-Computergraphik, der sich speziell mit Rasterung/Schattierung beschäftigt. Obwohl es natürlich Überschneidungen gibt, möchte ich hier nicht auf spezielle Bibliotheken wie OpenGL oder Direct3D eingehen. Es wird aber wahrscheinlich noch eine Unterserie zu WebGL geben.

Die Standardkamera

Bevor wir etwas rastern können, müssen wir zunächst Punkte im Raum auf unsere Kamera projizieren. Fürs Erste verwenden wir dazu die in Abb. 1 gezeigte inverse Lochkamera (s. Teil 0).

Abb. 1: Unsere Standard-Lochkamera. Der »eye point« (das Loch) ist im Ursprung und der Schirm liegt in der Ebene z = -1. Die Kreuze auf den Achsen haben jeweils eine Längeneinheit Abstand.
Weiterlesen „Malen mit Zahlen, Teil RS1 – Kamera und Punkte“

Malen mit Zahlen, Teil 0 – die (inverse) Lochkamera

Dieser Beitrag beginnt eine neue Serie über 3D-Computergraphik. Speziell werden wir uns mit zwei Techniken – Raytracing und Rasterung/Schattierung – beschäftigen.

Im nullten – gemeinsamen – Teil geht es um die einfachste Kamera für perspektivische Abbildungen: die (inverse) Lochkamera bzw. Camera obscura. Ein röhrenförmiges Modell ist in Abb. 1 schematisch dargestellt.

Abb. 1: Eine röhrenförmige Lochkamera bildet ein Motiv ab. G, B sind Gegenstands- bzw. Bildgröße und g, b sind Gegenstands- bzw. Bildweite. Das Bild steht auf dem Kopf.
Weiterlesen „Malen mit Zahlen, Teil 0 – die (inverse) Lochkamera“

Fourier-Reihen, Teil 9 – komplexe Signale und Kurven in der Ebene

In den bisherigen Teilen haben wir uns mit der Fourier-Analyse reeller Signale beschäftigt. Dabei haben wir rotierende Zeiger unterschiedlicher Frequenzen addiert und die Projektion des Summenzeigers ergab unser zeitabhängiges Signal (s. Teil 1).

Der Summenzeiger hat dabei recht komplizierte Kurven in der komplexen Ebene beschrieben (s. speziell Teil 2). In diesem Teil stellen wir nun die Frage, wie wir geschlossene, ebene Kurven in eine Summe von rotierenden Zeigern verwandeln können.

Einfache Beispiele für solche Kurven sind Lissajous-Figuren wie in Abb. 1 gezeigt. Wir betrachten dabei die Bahnkurve eines Punktes, dessen x– und y-Koordinaten allgemeine Sinus-Funktionen der Zeit t sind. Wenn der Quotient der beiden Frequenzen rational ist, sind die Bahnen geschlossen – und damit periodisch.

Abb. 1: Bahn eines Punktes, dessen x– und y-Koordinaten allgemeine Sinus-Funktionen sind. Speziell ist f'=0.2\,\text{Hz} und f''=0.4\,\text{Hz}, was eine Periodendauer von T=5\,\text{s} bedeutet.
Weiterlesen „Fourier-Reihen, Teil 9 – komplexe Signale und Kurven in der Ebene“

Fourier-Reihen, Teil 7 – wie Signale in Frequenzen zerlegt werden

Wenn wir ein Signal in eine Fourier-Reihe »entwickeln«, müssen wir herausfinden, welche Frequenzen in diesem Signal stecken. Die Formeln dazu haben wir schon in Teil 3 gesehen. Aber warum funktioniert das – speziell bei gemessenen Signalen – wirklich?

Weiterlesen „Fourier-Reihen, Teil 7 – wie Signale in Frequenzen zerlegt werden“