240 likes | 380 Views
NURBS & CO. eine kurze Vorstellung, vor allem an Hand von Beispielen weniger von Theorie und ohne Anspruch auf Vollständigkeit und strenge Wissenschaftlichkeit e ben für die Schule gedacht. Am Anfang ein wenig Eigenwerbung:
E N D
NURBS & CO eine kurze Vorstellung, vor allem an Hand von Beispielen weniger von Theorie und ohne Anspruch auf Vollständigkeit und strenge Wissenschaftlichkeit eben für die Schule gedacht
Am Anfang ein wenig Eigenwerbung: http://raumgeometrie.schule.at oder http://www.schule.at/portale/raumgeometrie-gz-dg-cad/ mit z.B. folgenden Informationen Architektur Rundgangwo jeden Monat ein besonders spannendes Architektur Thema besprochen wird VRML-Lehrgang POV-Ray Lehrgang Blender Lehrgang Nichteuklidische Geometrie (gegen Jahresende)
Approximation durch SPLINEFUNKTIONEN Eine Anzahl von Punkten soll durch eine möglichst glatte Polynomfunktion verbunden werden. Vergleich: EIN Polynom - Spline
Beispiel: • P0(-4,0), P1(0,0), P2(4,0), P3(6,2), P4(8,0), P5(12,0), P6(16,0) • Es sind also sechs Polynomfunktionen P(x), Q(x),...U(x) nötig, eine pro Intervall. • Derive: • Zuerst werden die Punkte eingegeben • dann die Polynomfunktionen definiert • dann die Anschlussbedingungen eingegeben (C2-Übergänge in jedem Zwischenpunkt) • und die Randbedingungen (Wendpunkte)
Innen: C2-Übergänge • In den Randpunkten: Wendepunkte • Die Gesamtkrümmung ist minimal • Nachteil: • Änderung eines Punktes bewirkt Totaländerung. • Hier ein Splinerechner: • http://www.arndt-bruenner.de/mathe/scripts/kubspline.htm
Jetzt wird ein ganz anderer Weg beschritten. Es ist also wieder eine Anzahl n+1 von Punkten A0, A1, ... An , gegeben. Die Punkte der interpolierenden Kurve sollen durch ein gewichtetes Mittel der gegebenen bestimmt werden, also etwa X = g0A0 + g1A1 + g2A2 + .... + gnAn mit variablen Gewichtsfunktionen gi(u) Der Parameterbereich für u soll sein [0, 1] und die Summe der gi(u) soll immer (d.h. für alle u) =1 sein, X befindet sich dann immer in der konvexen Hülle der Punkte.
Die Bernsteinpolynome B0,0= 1, B0,1(u) = 1-u, B1,1(u) = u B0,2(u) = (1-u)² B1,2(u) = 2u(1-u) B2,2(u) = u²B0,3(u) = (1-u)³ B1,3(u) = 3u(1-u)² B2,3(u) = 3u²(1-u) B3,3(u) = u³B0,4(u) = (1-u)4 B1,4(u) = 4u(1-u)3 B2,4(u) = 6u²(1-u)² B3,4(u) = 4u³(1-u) B4,4(u) = (1-u)4
Wichtige Eigenschaft: sie bilden eine Zerlegung der 1 Und sind daher als Gewichtungsfunktionen geeignet. 1 = 1n = ( u+(1-u) )n = Σ Bi,n(u)
Nicht-rationale Bezierkurven Quelle: www.dma.ufg.ac.at
Quelle: • http://www.at-mix.de/bezier_kurve.htm • Läuft durch Start- und Endknoten P0 bzw. Pn, • in diesen tangential zu P0 P1 bzw. Pn-1 Pn; • Grad ist abhängig von der Anzahl der Kontrollpunkte • (Grad = n = Anzahl der Kontrollpunkte – 1 • Anwendung in vielen Grafikprogrammen • Änderung eines Punktes führt zu Globaländerung der Kurve
Bezierflächen in Tensorproduktdarstellung. Quelle: http://www.grg21oe.at/mathe_geom/Kurs/freiformflaeche.htm
Bearbeitungsfunktionen bei Blender • Kurve einfügen: Add - Kurve - Bezier • Schließen: durch Drücken von C im Edit Modus • Den Öffnungspunkt verschieben: Schließen Sie die Kurve (mit C). Wählen Sie dann die beiden Punkte aus, zwischen denen die Kurve geöffnet sein soll, und drücken X->Erase Segment. • Zwei Kurventeile verbinden: mit F (make Segment) wieder verbinden. • Ein Kurvensegment abtrennen: Separierte Kurvensegmente können Sie mit P (separate) in ein eigenes Objekt umwandeln. • Extrude: zuerst in Mesh umwandeln: ALT + C • Neue Punkte: klicken Sie mit Strg-LMT in das Fenster.
Kritik an den Bezierkurven • Die Bernsteinpolynome sind überall ≠ 0 (ausgenommen die Randpunkte), daher beeinflusst jeder Punkt die gesamte • Im Anfangspunkt ist nur das erste Polynom ≠ 0, im Endpunkt nur das letzte, alle anderen sind dort = 0 und daher geht die Bezierkurve durch Anfangs- und Endpunkt. • Der Grad der Kurve ist um 1 geringer als die Anzahl der Punkte, bei vielen Punkten daher riesig. • Das alles will man dezidiert nicht haben.
Die Gewichtsfunktionen für B-Splines. • Man hat daher die Gewichtsfunktionen so modelliert, dass sie im Ausdruck unten nur in einem bestimmten Intervall ≠ 0 und daher der betreffende Punkt das Aussehen auch nur in diesem Intervall beeinflussen kann. • Ändert man daher einen Punkt ab, so führt das nur zu einer lokalen Änderung der Kurve, der Rest bleibt unbeeinflusst.
Die Gewichtsfunktionen vom Grad 0 [N0,0(u):=CHI(0, u, 1), N1,0(u):=CHI(1, u, 2), N2,0(u):=CHI(2, u, 3), ...] sind Treppenfunktionen, die jeweils im Intervall [i, i+1] den Wert 1 haben und sonst =0 sind. Alle aufsummiert ergeben trivialerweise 1. Für u aus [0,1) erhält man immer den Punkt P0
Die Gewichtsfunktion vom Grad 1: Sägezahn. Alle aufsummiert ergeben 1, aber erst ab u=1!!N0,1(u) :=(u-0)*CHI(0,u,1) + (2-u)*CH(1,u,2)N1,1(u) :=(u-1)*CHI(1,u,2) + (3-u)*CH(2,u,3) N2,1(u) :=(u-2)*CHI(2,u,3) + (4-u)*CH(3,u,4) Usw.
Die Gewichtsfunktionen vom Grad 2 • Das Verfahren von oben setzt man sinngemäß fort, allerdings sind die Summen dann nicht 1 sondern 2, man muss also durch 2 dividieren. • Jeder Teil besteht aus drei gewöhnlichen Parabeln, insgesamt mit Breite 3, sonst =0. • Alle aufsummiert ergeben 1, aber erst ab u=2!! • Für ganzzahlige u sind genau zwei ≠0 mit Wert beidemale 1/2, das sind durch die Halbierungspunkte der Seiten des Stützpolygones.
Die Gewichtsfunktion vom Grad 3: • besteht aus vier kubischen Parabeln, mit Breite 4, sonst =0. • Alle aufsummiert ergeben 1, aber erst ab u=3!!
Rekursionsformel von de Boor/Cox/Mansfield Grad 0: liefert also nur die Punkte zurück. Grad 1: liefert also nur den Streckenzug zurück Grad 2: liefert eine Kurve, die die Polygonseiten in deren Halbierungspunkten berührt, sie beginnt im ersten und endet im letzten Grad 3: liefert eine Kurve ohne besonders ins Auge stechende Eigenschaften
Standard B-Spline in Blender • Add- Curve– Nurbs • Im Edit Modus
Non Uniforme B-Splines Grad 0: [N0,0(u):=CHI(0, u, 0), N1,0(u):=CHI(0, u, 0), N2,0(u):=CHI(0, u, 1), N3,0(u):=CHI(1, u, 2), ...]wobei die ersten beiden ≡ 0 sind. Grad 1: N0,1(u) := (u-0)*0 + (0-u)*0 ≡ 0N1,1(u) := (u-0)*0 + (1-u)*N2,0(u)N2,1(u) := (u-0)*N2,0(u) + (2-u)*N3,0(u)N3,1(u) := (u-1)*N3,0(u) + (3-u)*N4,0(u) Usw.
Beispiel: U = < 0,0,0,1,2,3,4,5, ... Zu sehen sind Ursache und Wirkung: die Kurve geht durch den Mehrfachknoten
Blender • Im Bild der Standard Nurbs • offen und geschlossen • Im Editiermodus.
Nurbs-Flächen in Blender. Die Standard Fläche ist eher sparsam, sie geht nämlich ebenso wie die Kurve keineswegs durch ihre Stützpunkte. Festgelegt ist sie übrigens durch ein 4*4 Gitter aus 16 Punkten.