Die Mandelbrotmenge
Die Mandelbrotmenge ist eine berühmte fraktale Figur, die in Blender durch mathematische Shader oder Geometrie-Nodes visualisiert werden kann.
Sie entsteht durch die wiederholte Anwendung einer komplexen Gleichung $z_{n+1} = z_n^2 + c$ und Farbcodierung der Iterationszahl.
In Blender lässt sich das Bild oft über den Shader Editor mit einem Scripted Expression oder über ein gerendertes Bild-Texture-Setup realisieren.
Eine andere Möglichkeit ist die Nutzung von Geometry Nodes, um Punkte zu generieren und farblich nach Iterationswert einzufärben.
Man kann die Fraktal-Textur direkt als Material auf eine Ebene legen, um einen 2D-Look zu erzeugen.
Für Animationen kann der Kamera-Zoom gesteuert werden, sodass ein „Eintauchen“ ins Fraktal entsteht.
Blender erlaubt durch Cycles oder Eevee sehr scharfe und detailreiche Renderings, wenn die Textur hochauflösend ist.
Mit Keyframes kann man die Parameter wie Zoom, Rotation oder Farbschema über die Zeit verändern.
Durch Kombination mit Displacement Maps kann aus der 2D-Mandelbrotmenge eine plastische 3D-Landschaft entstehen.
Solche Renderings verbinden mathematische Präzision mit künstlerischer Gestaltung und sind in Blender vollständig skript- und animierbar.

# mandelbrot.py
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(xmin, xmax, ymin, ymax, width=1200, height=900, max_iter=300, escape=2.0):
# Gitter der komplexen Zahlen c = x + i y
x = np.linspace(xmin, xmax, width)
y = np.linspace(ymin, ymax, height)
C = x + 1j * y[:, None]
Z = np.zeros_like(C, dtype=np.complex128)
alive = np.ones(C.shape, dtype=bool) # Punkte, die noch nicht „entkommen“ sind
iters = np.zeros(C.shape, dtype=int) # Iterationszahl beim Entkommen
for i in range(max_iter):
Z[alive] = Z[alive] * Z[alive] + C[alive]
escaped = np.greater(np.abs(Z), escape, where=alive)
iters[escaped & alive] = i
alive &= ~escaped
if not alive.any(): # Frühzeitiger Abbruch, wenn alle entschieden sind
break
iters[alive] = max_iter # Punkte, die nie entkommen: Teil der Menge (bis max_iter)
return iters
if __name__ == "__main__":
# Gesamtsicht
XMIN, XMAX, YMIN, YMAX = -2.5, 1.0, -1.5, 1.5
data = mandelbrot(XMIN, XMAX, YMIN, YMAX, width=1200, height=900, max_iter=300)
plt.figure(figsize=(8, 6))
# keine Farbvorgabe – Matplotlib nutzt die Standard-Colormap
plt.imshow(data, extent=(XMIN, XMAX, YMIN, YMAX), origin="lower")
plt.xlabel("Re(c)")
plt.ylabel("Im(c)")
plt.title("Mandelbrot Set")
plt.tight_layout()
plt.show()