Ziehen, nicht zeichnen: Das Kontrollpolygon unter jeder Rhino-Kurve
Wie eine Idee – jede Strecke eines Kontrollpolygons am gleichen Verhältnis teilen – zur Bézier-Kurve und NURBS-Geometrie hinter jedem Rhino-Kontrollpunkt wurde.
Öffne Rhino, zeichne eine beliebige Freiformkurve, drücke F10. Ein Schwarm von Punkten erscheint, verbunden durch dünne Linien, sie schweben leicht über der Kurve. Keine Dekoration, keine Anzeigeeinstellung – das ist das Kontrollpolygon: ein paar Punkte, die die Kurve meist nie berührt, aber völlig lenkt. Du ziehst einen und die ganze Kurve folgt. Jede Kurve, jede Fläche, jeder Bogen und jeder Kreis in Rhino beruht darauf. Es ist eine Kurve, die gezogen wird, nicht gezeichnet.
Die Idee ist älter als deine Software, sie stammt vom Reissbrett der europäischen Autoindustrie. Zwei Ingenieure erreichten sie in denselben Pariser Jahren unabhängig, beim Lösen eines praktischen Problems: wie gibt man einer Fräsmaschine eine Linie so präzise, dass sie das gleiche Karosserieteil zweimal identisch schneidet. Einer bei Citroën, einer bei Renault. Eine Generation später verallgemeinerte eine Doktorarbeit der Syracuse University ihre Kurve zur Form, mit der Rhino heute läuft. Dieser Essay folgt der Linie vom Autokörper zum Fassadenpanel und schliesst mit Code-Zeilen, die du selbst ausführen kannst.
←HEUTE: 2026: Die meisten Kurven, die ein Büro zur CNC-Fräse sendet, verlassen als NURBS – über 3dm, STEP oder IGES.
→3012: Die Dateiformate wechseln viele Male; der Schritt, jede Strecke am Verhältnis t zu teilen, überlebt sie alle.
Kern: Verstehst du die Konstruktion, kannst du die Geometrie aus ersten Prinzipien rekonstruieren, egal was der Datei geschieht.
Was es ist
Was es ist: Eine Bézier-Kurve ist eine glatte Kurve, definiert durch eine geordnete Menge von Kontrollpunkten. Sie beginnt auf dem ersten Punkt und endet auf dem letzten. Die Punkte dazwischen wirken als Griffe, die die Kurve zu sich ziehen, ohne auf ihr zu liegen. Eine NURBS-Kurve (Non-Uniform Rational B-Spline) ist dieselbe Idee auf drei Wegen erweitert. Sie verketten viele kurze, Bézier-ähnliche Stücke. Sie lässt diese Stücke ungleiche Längen im Parameterraum haben. Und sie gibt jedem Kontrollpunkt ein Gewicht. Grad, Kontrollpunkte, Knoten, Gewichte: diese vier Worte im Panel Properties > Details von Rhino decken das ganze Konzept ab. Du brauchst die Formeln nicht herzuleiten, um Rhino gut zu nutzen. Aber du brauchst zu verstehen, was jedes Wort steuert.
Warum es funktioniert
Warum es funktioniert: Beginne mit vier Punkten, P0 bis P3. Wähle eine Zahl t zwischen 0 und 1, sagen wir 0.3. Markiere den Punkt 30% des Weges entlang jeder der drei Strecken des Kontrollpolygons. Du hast jetzt drei neue Punkte, verbinde sie und teile wieder bei 30%, das gibt zwei Punkte. Teile noch einmal und du hast einen einzelnen Punkt, und dieser Punkt liegt auf der Kurve. Lass t von 0 bis 1 laufen und du zeichnest die ganze Kurve mit nichts ausser wiederholter linearer Interpolation – der gleichen Methode, mit der du einen Punkt auf einer Linie plazierst. Das ist de Castelhaus Algorithmus. Er ist numerisch stabil, weshalb Geometry Kernels sich seit Jahrzehnten darauf verlassen.
Schreib die gleiche Konstruktion als eine Formel und jeder Kontrollpunkt wird mit einem Blending-Polynom multipliziert. Das sind die Bernstein-Polynome, die Sergei Natanovich Bernstein in einem probabilistischen Beweis des Weierstrass-Approximationssatzes einführte, 1912 veröffentlicht in den Communications de la Société Mathématique de Kharkov. Für jedes t addieren sich die Blending-Gewichte zu genau 1. Diese Partition der Einheit ist der Grund, weshalb die Kurve immer innerhalb der konvexen Hülle ihrer Kontrollpunkte bleibt. Die Kurve kann ihren Käfig nicht verlassen, und diese Vorhersagbarkeit macht das Bearbeiten natürlich anfühlen.
Eine einzelne Bézier-Kurve mit vielen Kontrollpunkten wird starr: Verschiebe einen Punkt und die ganze Spanne verschiebt sich. B-Splines lösen das durch das Verbinden von mehreren Kurven-Stücken niedriger Grade an Knoten, so dass das Ziehen eines Kontrollpunkts nur die benachbarte Kurvenstrecke ändert. «Non-uniform» bedeutet, die Knoten können ungleichmässig beabstandet sein. «Rational» bedeutet, jeder Kontrollpunkt trägt ein Gewicht, und ein höheres Gewicht zieht die Kurve stärker zu seinem Punkt. Mit den richtigen Gewichten wird eine Grad-2-Kurve ein exakter Kreis oder eine Ellipse – etwas, das eine einfache Bézier-Kurve oder ein non-rationales B-Spline nicht darstellen können. Darum ist Rhinos Kreis ein echter Kreis und kein Polygon mit vielen Seiten. Der Trade-off ist ins System eingebaut. Den Grad erhöhen bringt Glätte, verbreitet aber jede Bearbeitung weiter entlang der Kurve, und eine Kurve mit weniger Kontrollpunkten umzubauen erkauft sich Bearbeitbarkeit auf Kosten der Treue zur Form, die du hattest.
Ursprünge
Ursprünge: Vor dem Computer zeichneten Schiffsbauer faire Kurven mit flexiblen Holzlatten, die durch Bleigewichte gehalten wurden. Der Mathematiker I. J. Schoenberg benannte den mathematischen Spline nach diesem Werkzeug. Die Latte war ein analoger Computer, der die Biegung minimierte, und die Kurve kam aus dem Material.
Paul de Casteljau, 1930 in Besançon geboren, war ein Physiker und Mathematiker, ausgebildet an der École Normale Supérieure. Er trat Citroën 1958 bei und blieb bis zu seiner Pensionierung 1992. 1959 entwickelte er den Algorithmus, der jetzt seinen Namen trägt. Nach Wikipedia wurde er intern als Outillage Méthodes Calcul (INPI Enveloppe Soleau Nr. 40.040, 1959) und 1963 durch das interne Dokument Courbes et Surfaces à Pôles aufgezeichnet. Citroën behielt die Arbeit intern, so dass sie erst 1974 veröffentlicht wurde.
Bei Renault trat Pierre Bézier 1933 im Alter von 23 Jahren ein, nach einem Abschluss in Maschinenbau von der École des Arts et Métiers (1930) und einem zweiten in Elektrotechnik von Supélec (1931), und verbrachte 42 Jahre im Unternehmen. Wie Christophe Rabut von INSA Toulouse in seinem Nachruf von Dezember 1999 in NA Digest (v99 n48) schrieb, begann Bézier seine CADCAM-Forschung 1960 am UNISURF-System, das 1968 gestartet und seit 1975 im vollständigen Einsatz ist. Bézier veröffentlichte offen, so trägt die Kurve seinen Namen. Wikipedia fasst das präzise zusammen: er «verbreitete, aber erschuf die Bézier-Kurve nicht wirklich». Die beste Lesart der Geschichte ist die zweier Ingenieure, die die gleiche Idee unabhängig erreichten, jeder sein eigenes Firmen-Problem lösend. Bézier promovierte 1977 in Mathematik in Paris, im Alter von 67, erhielt 1985 den ACM SIGGRAPH Steven A. Coons Award und wurde durch die Technische Universität Berlin mit einem Ehrendoktor ausgezeichnet.
Der stille Held dieses Kapitels ist Wolfgang Boehm. Er war der erste in der Forschungsgemeinschaft, der de Casteljau anerkannte und prägte den Begriff «de Casteljau-Algorithmus» in den späten 1970er Jahren. Ohne diesen Akt sorgfältiger Zuschreibung hätte der Name des ersten Ingenieurs leicht verloren gehen können. De Casteljau erhielt später 1987 den Seymour Cray Prize, 1993 den John Gregory Memorial Award und 2012 den Bézier Award von der Solid Modeling Association.
Der Weg zu NURBS führte durch die Syracuse University, wo Steven A. Coons’ Gruppe, die auch William Gordon und Robin Forrest umfasste, an Computer-Aided Design arbeitete. Rich Riesenfelds Dissertation brachte B-Splines in CAD. Ken Verspreilles 1975er Promotion, Computer-Aided Design Applications of the Rational B-Spline Approximation Form, überwacht durch Coons und heute im SURFACE-Repository von Syracuse aufbewahrt, verallgemeinerte sie zur non-uniformen, rationalen Form. Boeing adoptierte es, ein Boeing-Manager prägte das Akronym «NURBS», und die Form ging in Boeings TIGER-CAD-System über, bevor sie Teil von IGES, STEP, ACIS und PHIGS wurde. In einem Beitrag zum Siemens Solid Edge Blog vom 16. September 2013 brachte Versprille den Kern der Arbeit in einer Zeile: «Es geht um die Anwendung der Mathematik. Nicht nur die Mathematik!»
Rhino kam spät in dieser Geschichte an, und sein Beitrag war, die Mathematik für alle anderen zu verpacken. Die McNeel-Zeitleiste verzeichnet ein erstes Treffen mit Applied Geometry im Mai 1992 zum Integrieren ihrer AGLib-NURBS-Bibliothek in AutoCAD, ein Rhino-Beta im April 1994 und Rhino 1.0 im Oktober 1998. David Ruttens Grasshopper, zuerst 2007 veröffentlicht und im März 2008 zu Rhino for Windows hinzugefügt, verwandelte diese Kontrollpunkte in Parameter, die jeder verdrahten konnte. Wie PAZ’s früherer Artikel Universal glue es ausdrückte, ist Rhinos NURBS-Geometrie das, was komplexe Formen präzise und intuitiv durch bearbeitbare Kontrollpunkte erstellen lässt. Ein Forschungsergebnis auf einem gewöhnlichen Büro-Schreibtisch nutzbar zu machen war Ingenieurwesen für sich.
In der Praxis
In der Praxis: Die Kontrollpunkte, die in den 1960ern ein Autoschutzblech formten, formen jetzt ein gekrümmtes Fassadenpanel, die Kante einer CNC-gefrästen Schaum- oder Holzschalung, oder eine lasergeschnittene Rippe für ein Freiformdach. Alle verlassen das Büro als NURBS, über native 3dm, STEP oder IGES. Weil die Bögen rational sind, erhält die CAM-Software des Herstellers den wahren Radius statt einer facettierten Schätzung, und die Werkstatt kann die gleiche Form zweimal schneiden – genau das, was Renault von UNISURF wollte. In Grasshopper erscheinen die Konzepte als Komponenten. Nurbs Curve nimmt Kontrollpunkte, einen Grad und ein periodisches Flag. Control Points zerlegt eine existierende Kurve zurück in ihre Punkte, Gewichte und Knoten. Wenn du weisst, was diese Ausgaben bedeuten, wird eine Definition aufgehört, eine Black Box zu sein, und wird etwas, über das du nachdenken kannst.
Atelier: Wenn ein Büro AI-unterstützte Modellierung adoptiert, erzeugen die Werkzeuge Kurven schneller als jemand prüft, was diese Kurven wirklich sind, und eine umgearbeitete Grad-5-Annäherung eines Bogens sieht auf dem Bildschirm identisch zu einem wahren rationalen Kreis aus, bis sie die CNC-Werkstatt erreicht. Die konkrete Handlung: Füge eine Zeile zu deinem Fertigungsübergabe-Template hinzu, die Grad, Kontrollpunkt-Zahl und rationales Flag aufzeichnet (alle gelesen aus Properties > Details) für jede Kurve, die zu CAM geht.
Rückblickend, Jahrzehnte später, waren die parametrischen Dateien, die meine Generation bereute, selten die hässlichen Dateien. Es waren die, deren Logik niemand nach dem Verschwinden des Plugins wieder aufbauen konnte. Eine Kurve, die du als «Grad 3, sieben Punkte, diese Gewichte, diese Knoten» beschreiben kannst, kann von jedem wieder aufgebaut werden. Eine Kurve, nur als «Ausgabe des Werkzeugs» beschrieben, kann nicht. Bewahre die Beschreibung auf.
Hack
Hack: Zeichne eine kubische Kurve von Hand mit der de-Casteljau-Schleife (Schneiden am gleichen Verhältnis) in einer GhPython-Komponente, lege sie dann über die Ausgabe von Grasshoppers Nurbs Curve für die gleichen vier Punkte mit Grad 3. Speise die Komponente mit einer Punktliste namens cps (stelle den Input auf List Access) und leite die Ausgabe an eine Polyline-Komponente. Die beiden sollten übereinstimmen, da ein offenes, uniformes, Grad-3 NURBS mit vier Kontrollpunkten genau eine Bézier-Kurve ist. Füge dann einen fünften Punkt hinzu und beobachte, wie die handgebaute Kurve versteift, während die NURBS-Version lokal bleibt.
def lerp(a, b, t): return [a[i] + t * (b[i] - a[i]) for i in range(3)]
def casteljau(P, t):
while len(P) > 1: P = [lerp(P[i], P[i + 1], t) for i in range(len(P) - 1)]
return P[0]
import Rhino.Geometry as rg
a = [rg.Point3d(*casteljau([[p.X, p.Y, p.Z] for p in cps], k / 40.0)) for k in range(41)]Öffne dein letztes Fassaden- oder Schalungsmodell heute, drücke F10 auf seiner wichtigsten Kurve, und lese das Kontrollpolygon, bis du erklären kannst, warum die Kurve die Form nimmt, die sie hat.
PAZ Kaffi · interdisziplinäre Redaktionsarbeit, geleitet von der PAZ Academy