Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mandelbrot · Dreidimensionale Studie in Schwarz und Gold

Eine interaktive Darstellung der Mandelbrot-Menge, die räumlich wirkt. Alles steckt in einer einzigen HTML-Datei: kein Installationsvorgang, keine Abhängigkeiten, keine Netzverbindung nötig.

Relief-Modus am Ort „Triple Spiral", rechts das vollständige Bedienfeld

Alle Abbildungen zeigen die Anwendung so, wie sie im Browser steht: links die Darstellung, rechts das Bedienfeld mit sämtlichen Parametern des jeweiligen Modus.

Starten

mandelbrot-3d.html im Browser öffnen. Benötigt wird WebGL 2 mit aktiver Hardwarebeschleunigung.

Darstellungsmodi

Relief

Das Höhenfeld wird als Prägung in der Bildebene beleuchtet, mit Schlagschatten und Umgebungsverdeckung. Wirkt wie eine gravierte Platte. Das Titelbild oben zeigt diesen Modus.

Terrain 3D

Dasselbe Höhenfeld als Gelände mit freier Kamera, echter Perspektive, Seitenwänden und Selbstverschattung.

Terrain-Modus, Höhe aus dem Distanzschätzer, mit den Reglern für Kamera und Höhe

Mandelbulb

Das räumliche Analogon als eigenständiger Körper, abgetastet über eine Abstandsschätzung.

Mandelbulb mit Potenz 8, Palette Antikgold, mit den Reglern für Licht und Material

Tiefzoom ohne feste Grenze

Übliche Fraktaldarstellungen im Browser enden bei etwa Faktor 10⁵, weil die Grafikkarte einfach genau rechnet. Hier wachsen Stellenzahl und Iterationsgrenze mit der Vergrößerung mit:

  • Die Bildmitte wird als Festkommazahl beliebiger Länge geführt, auf Basis von BigInt.
  • Ein einzelner Referenzpunkt wird in dieser Genauigkeit iteriert, alle Bildpunkte rechnen nur noch ihre Abweichung davon (Störungsrechnung mit Rebasing).
  • Jeder Bildpunkt führt dabei einen eigenen Exponenten mit, da die Abweichung anfangs winzig ist und im Verlauf auf Größe eins wächst.

Geprüft bis Vergrößerung 2·10¹⁵, rechnerisch ohne Zusammenbruch bis 4·10²⁸. Tiefe Ansichten lassen sich über „Link kopieren" verlustfrei weitergeben.

Bedienung

Eingabe Wirkung
Ziehen Relief: verschieben · 3D: Kamera drehen
Umschalt + Ziehen in 3D den Fraktalausschnitt verschieben
Mausrad zoomen, beim Mandelbulb die Kameradistanz
Strg + Mausrad im Terrain die Kameradistanz
Doppelklick an dieser Stelle hineinzoomen
Pfeiltasten schrittweise verschieben
H F R S Bedienfeld · Vollbild · Zurücksetzen · PNG speichern
Leertaste Auto-Rotation ein und aus

Rund 45 Parameter in neun Gruppen, dazu neun Paletten, sieben Stil-Voreinstellungen und neun voreingestellte Orte im Fraktal.

Nach jeder Änderung verfeinert sich das Bild schrittweise und kommt danach ohne weitere Rechenlast zur Ruhe. Während der Bedienung sinkt die Auflösung automatisch und steigt danach wieder.

Weitere Eigenschaften

  • PNG-Export bis 12288 Pixel Breite. Das Bild entsteht kachelweise und ist damit nicht an die Texturgrenze der Grafikkarte gebunden.
  • Diagnoseabschnitt mit Bericht über Grafikkarte, Erweiterungen und gemessener Bildzeit je Modus, kopierbar in die Zwischenablage.
  • Robust gegen Kontextverlust: Gibt der Browser den Zugriff auf die Grafikkarte frei, baut sich die Darstellung selbständig wieder auf.
  • Rückfallpfad auf 8 Bit je Kanal, falls die Erweiterung für Gleitkomma-Ziele fehlt.

Bekannte Grenzen

  • Ferne Grate im Terrain-Modus flimmern noch leicht. Der Regler „Detailtiefe Ferne" steuert den Kompromiss zwischen Ruhe und Schärfe.
  • Im Relief-Modus kann ein sehr langer Schlagschatten beim Export an einer Kachelgrenze enden.
  • Geprüft ist bisher nur Chromium unter Windows.

Aufbau

Die Datei ist in nummerierte Abschnitte gegliedert. Zwei Renderdurchgänge: Ein Shader berechnet das Fraktal in eine Höhentextur, ein zweiter leitet daraus Normalen, Schatten und Verdeckung ab. Die drei Darstellungsmodi entstehen aus einem gemeinsamen Shader-Quelltext über Präprozessor-Schalter.

Neue Parameter werden ausschließlich als Eintrag in der Datenstruktur SECTIONS ergänzt; Zustandshaltung, Serialisierung in den Link und Sichtbarkeitsregeln hängen daran.

Lizenz

MIT, siehe LICENSE. Praktisch bedeutet das: Der Code darf genutzt, verändert und in eigene Arbeiten übernommen werden, auch in kommerzielle, solange der Urhebervermerk erhalten bleibt. Eine Gewähr wird nicht übernommen.

Die GLSL-Streufunktion hash12 stammt aus „Hash without Sine" von Dave Hoskins und steht ebenfalls unter MIT. Alles Übrige ist für dieses Projekt entstanden.

About

Interaktive, räumlich wirkende Darstellung der Mandelbrot-Menge in Schwarz und Gold. Eine einzelne HTML-Datei, WebGL 2, ohne Abhängigkeiten, mit Tiefzoom ohne feste Grenze.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages