2012-04-10 12 views
1

Ich passe NURBS-Oberflächen an einige Datenpunkte in Form von Patches an. Ich habe eine bestimmte Anzahl von Patches und eine einheitliche Auflösung von 17x17 Datenpunkten pro Patch. Die Gradwerte sind 3 in jeder Richtung.Wie wird C1-Kontinuität beim Erzeugen von NURBS-Oberflächen auferlegt?

Jeder Patch ist mit einer Routine NURBS-Oberfläche angepasst. Die Datenpunkte zwischen benachbarten Patches stimmen überein - so ist die C0-Stetigkeit erfüllt. Aber ich mache nichts besonderes für die C1-Kontinuität. Wie sollte ich meinen Algorithmus ändern, um eine C1-Kontinuität zu erhalten?

Antwort

1

Es gibt mehrere Möglichkeiten, dies zu tun.

Eine Sache, die Sie tun könnten, ist nur unabhängig lösen und dann benachbarte Patches zu C1 zwingen, indem Sie die Grenzkontrollpunkte auf den Mittelpunkt der beiden Kontrollpunkte in Richtung des Inneren der beiden benachbarten Patches setzen. Mit anderen Worten, wenn Sie vier Kontrollpunkte haben, Q0, Q1, P0 und P1, wobei P Punkte auf einer Oberfläche und Q Punkte auf einer anderen Oberfläche sind und P0 = Q0, dann setzen Sie P0 = 0,5 * (Q1 + P1). Wenn die Knotenbreite der NURBS-Patches unterschiedlich ist oder Sie mehr als 4 NURBS-Patches als Ecke haben, muss diese Gleichung anders sein. Ich gehe auch davon aus, dass Sie mehrere Endknoten haben (Bezier-Endbedingungen).

Eine andere Sache, die Sie tun könnten, ist ein globales System zu lösen, das die Bedingung C1 als lineare Gleichheitsbedingung enthält. Dies wird Ihnen ein optimales Ergebnis geben, aber es könnte viel langsamer sein.