Neues und Altes aus der Softwareprogrammierung

Quaternionen vs. Matrizen: Wenn Geometrie zur Kunst wird

Jörg Reck  February 19 2026 05:09:17 AM
Manchmal braucht es nur einen Funken, um ein Programmierprojekt zu entfachen. In meinem Fall war es die Folge des Podcasts „Geschichten aus der Mathematik“ über William Rowan Hamilton und seine vierdimensionalen Zahlen. Wer hört, wie Hamilton 1843 seine berühmte Formel verzweifelt in eine Brücke ritzte, bekommt sofort Lust, diese mathematische Magie in modernem Code zu testen. Also habe ich mich an den Rechner gesetzt und in .NET 10.0 (WPF) ein Experiment gewagt.

Das Szenario: Lissajous-Kurven im Tanz

Statt einer einfachen Parabel habe ich mich für die deutlich komplexeren Lissajous-Figuren entschieden. Diese entstehen durch die Überlagerung von Schwingungen und ergeben wunderbare, knotenartige Strukturen im 3D-Raum. Doch wie lässt man diese filigranen Gebilde am effizientesten rotieren? Hier kam die Kernfrage meines Projekts ins Spiel: Rechnet man Rotationen lieber mit der mathematischen Eleganz von Quaternionen oder der rustikalen Effizienz von Matrizen?

Die drei Kontrahenten im Vergleich

  1. Der Ästhet (CalcMode.Quaternion): Direkt inspiriert von Hamiltons Entdeckung. Wir nutzen das Hamilton-Produkt p' = q * p * q*. Es ist elegant, immun gegen den Gimbal Lock und fühlt sich mathematisch konsequent an. Aber: Mit circa 40 Operationen pro Punkt ist es rechenintensiv.
  2. Der Praktiker (CalcMode.Matrix): Die klassische 3x3-Rotationsmatrix. Mit nur circa 15 Operationen pro Punkt ist sie der nüchterne Arbeiter, der die Lissajous-Punkte ohne viel Federlesen durch den Raum schubst.
  3. Der High-Performer (CalcMode.Optimized): Mein Hybrid-Favorit. Wir nutzen die effiziente Komposition von Quaternionen für die Logik, da das Produkt zweier Quaternionen günstiger ist als das zweier Matrizen. Das Ergebnis wandeln wir jedoch einmalig pro Frame via ToMatrix() um, um die Masse an Kurvenpunkten effizient zu transformieren.
Ergebnisse aus dem Labor

Die Mathematik-Geschichte ist das eine, die CPU-Zeit das andere. Über die eingebaute Benchmark-Funktion zeigt sich schnell: Während das reine Quaternion-Modell bei tausenden von Lissajous-Punkten noch über die vierte Dimension nachdenkt, bringt der Optimized-Modus die Darstellung bereits butterweich auf den Bildschirm.

Entwickler-Fazit: Hamilton wäre stolz auf die mathematische Tiefe, aber für das flüssige Rendering komplexer Schwingungsfiguren ist die Brücke zur Matrix-Welt der wahre Beschleuniger.

Features der Anwendung

  • Perspektiv-Check: Dynamische Kamera (Azimut und Elevation) via Pfeiltasten, um die Lissajous-Knoten von allen Seiten zu bewundern.
  • Achsen-Rotation: Wechsel zwischen X, Y und Z, was bei diesen Kurven jedes Mal völlig neue Muster ergibt.
  • Modern C#: Nullable Reference Types und performante Logik ohne externe Grafik-Libraries.
Ein großes Dankeschön an den Podcast für diesen Motivationsschub. Es ist immer wieder faszinierend zu sehen, wie eine Entdeckung aus dem 19. Jahrhundert heute unsere Bildschirme zum Leuchten bringt.