Ich versuche, NURBS-Kurven (Oberflächen später!) Zu verstehen, aber ich habe einige Probleme, die Grundlagen des Innenlebens zu verstehen. Könnte mir bitte jemand ein paar Dinge erklären? Da ich aus Bezier-Kurven komme, wäre ein Vergleich zwischen diesen beiden besonders nützlich.
Die "rationale Basisfunktion" ähnelt ein wenig dem Bernstein-Polynom der (rationalen) Bezier-Kurve. Geht der Parameter
u
auch von 0 auf 1?Wie kann man einer Kurve "Details hinzufügen"? Ich meine, wenn ich mit Beziers eine kompliziertere Form beschreiben müsste, würde ich einfach mehrere Beziers "zusammennähen". Oder seltener den Grad erhöhen. Ich verstehe, dass ich auch den Grad von NURBS erhöhen und mehrere NURBS-Kurven nebeneinander stellen kann, aber sollte dies so gemacht werden?
Der Wikipedia-Artikel scheint mir zumindest über diesen "Knotenvektor" nicht sehr klar zu sein. Was ist es überhaupt?
Antworten:
B-Splines und Beziers sind parallele Erfindungen von mehr oder weniger derselben Sache. Wo Beziers versuchen, von der Idee der Anpassung von Tangenten auszugehen. B-Splines beginnen mit der Idee von Basisfunktionen. NURB-Splines (oder der rationale Teil in der Tat) sind nur Verallgemeinerungen von B-Splines, sodass Sie genaue Kegelschnitte * beschreiben können, da sie für das Engineering von besonderem Interesse sind.
Beginnen wir zunächst mit einer einfachen NURB Spline-Terminologie. Das Grundprinzip dieser Kurven ist etwas anders als bei Beziers. Zunächst gibt es das Konzept einer Spanne. Eine Spannweite würde in etwa einer ganzen Bezier-Verzahnung entsprechen, außer in Nurbs können Sie eine beliebige Anzahl von Spannweiten haben.
Bild 1 : Eine kubische NURBS-Spanne. Dies ist in der Formulierung etwas untypisch
Jede Spanne wird durch den Kurvengrad + 1 Kontrollpunkte ** gebildet. Jede Kurve kann aus einer beliebigen Anzahl von Punkten bestehen. In jeder aufeinanderfolgenden Spanne werden die Punkte aus der vorherigen Spanne wiederverwendet, indem ein Punkt gelöscht und ein Punkt mehr in die Liste aufgenommen wird. Das Erstellen komplexerer Kurven ist also so einfach wie das Anhängen weiterer Punkte an die Kurve.
HINWEIS : Die Bildkurven sind etwas atypisch parametrisiert. Was dies bedeutet, wird im nächsten Abschnitt erläutert. Wenn ich das Konzept der Knoten aufgreife. Dies ist nur eine einfachere Möglichkeit zu erklären, wie die Kurven zusammenkleben.
Bild 2 : 2 kubische Spannweiten nacheinander, jede Spannweite verwendet 4 Punkte. zusammen bilden sie eine Kurve. Sie teilen die meisten Punkte miteinander.
Inzwischen haben wir wahrscheinlich die 2 Fragen zum Hinzufügen von Komplexität beantwortet. Ich möchte jedoch hinzufügen, dass dieses Schema eine bessere Kontinuität als eine Bezierkurve gewährleistet. Zusätzlich können Sie das Punktarray, das den Rumpf bildet, zyklisch machen. Eine geschlossene Kurve bilden.
Bild 3 : Eine geschlossene kubische NURBS-Oberfläche hat so viele Bereiche wie Punkte. Jede Farbe ist eine Spanne.
Parametrisierung
Bis zu diesem Punkt könnte man einfach sagen, dass das Aneinanderreihen der Spannweiten ein Trick ist, genauso wie das "Nähen" der Bezier-Kurven. Aber es gibt einen Unterschied. Die Kurve wird entlang ihrer Länge parametrisiert. Die Kurven sind also nicht getrennt, sie interpolieren nicht wie Beziers in jeder Spanne von 0 zu 1. Stattdessen hat die zugrunde liegende Kurve einen anpassbaren Parameterbereich. Der Parameter wird in einem sogenannten Knoten gespeichert, und jeder Knoten kann einen willkürlich ansteigenden Wert in der Sequenz haben. Sie können also den gesamten Kurvenbereich im Bereich von 0 - 1 oder 0 bis 12 parametrisieren. Die Parametrisierung muss auch nicht einheitlich sein.
Diese Parametrisierung ändert die Form der Kurve. Warum sollte das nützlich sein? Nun, Sie können die Spannung entlang der Kurve für einen einstellen. Oder Sie können die Länge der Kurve in den U-Parameter codieren. Eine besondere Verwendung besteht darin, die NURBS-Kurve entweder ganz oder nur teilweise wie eine Bezier-Kurve wirken zu lassen (Bezier wie an den Enden, aber nicht in der Mitte).
Bild 4 : Gleiche Punkte, verschiedene Knotensequenzen. Die grüne NURBS-Kurve entspricht einer Bezier-Kurve mit einem Parameterbereich von 0-2 anstelle von 0-1
Ok, was sind die Knoten? Sie sind einfach die Bereiche der Basisfunktionen. Da der kubische B-Spline mit 4 Punkten 4 Interpolationsfunktionen hat, benötigt er 8 Knoten. Nur Bereiche, in denen sich 3 Funktionen überlappen und bis zu 1,0 summieren, können gezeichnet werden.
Bild 5 : 2 verschiedene Basisfunktionen, eine bezierartige und eine einheitliche Segmentparametrisierung, verteilt auf den Bereich 0-1.
Und jetzt haben wir meistens die Antwort auf Frage 1 beschrieben. Der Bereich ist nicht definiert. Sie können die Basisfunktionen nach Belieben erweitern. Und schließlich erzeugt der Knotenvektor einfach die Parameterbereiche für die Basisfunktionen. Es gibt noch eine weitere Sache, die die Form der Kurve bestimmt, und das ist der Gewichtsvektor. Aber dass eine andere Geschichte woanders erzählt werden soll.
* Dieses Rationale bedeutet in diesem Fall, dass eine NURBS-Kurve kein Polynom sein muss, da Sie einen Kreis mit Polynomen nicht beschreiben können.
** Man kann andere Arten von Punkten definieren.
quelle