Geometrie: High Order Surfaces
25. April 2004 / von Frank / Seite 8 von 13
Bézierflächen
Ohne jetzt allzu sehr in Formeln und Terme abzuschweifen, fällt es schwer, so ein Thema zu behandeln. Deswegen werden wir auch nur an der Oberfläche bleiben und entsprechend mit Bildern illustrieren. Um eine Bézierkurve zu erzeugen, verwendeten wir ausschließlich wiederholt die Lineare Interpolation. Was liegt näher, als dies bei Flächen mit bilinearer Interpolation analog umzusetzen? Dafür klären wir natürlich zunächst den aus den Texturfilter Artikeln bekannten Begriff. Vereinfacht kann man sagen: Lineare Interpolation passt die einfachste "Kurve" (Gerade) zwischen zwei Punkten an - Bilineare Interpolation die einfachste Fläche zwischen vier Punkten. Eigentlich recht einfach: Wir stellen und zuerst vier beliebige Punkte im Raum vor und verbinden diese:
die vier Punkte verbunden mittels roter Geraden
Links: wir teilen zwei gegenüberliegenden Strecken in die selben
Verhältnisse ein
anschließend werden diese anschaulich durch die grünen Geraden verbunden
Rechts: das selbe geschieht mit den anderem roten Geradenpaar - gelbe Linien
werden erzeugt
Damit erhalten wir die Fläche zwischen den vier gegebenen Punkten. Für die Parametrisierung führen wir folgende Nomenklatur ein:
Bi-Lineare Interpolation:
(einfach zweimalige Lineare Interpolation - in beide "Richtungen")
(Was wir hier letztendlich erhalten, ist ein hyperbolisches Paraboloid.) Für unsere Bézierfläche benötigen wir wie vorher auch einige Kontrollpunkte - allerdings keine beliebige Anzahl und Anordnung, sondern in einer rechteckigen Form vorliegend. Diese wenigen Punkte geben die Gestalt der Fläche eindeutig vor:
Beispiel für ein 4x4 Kontrollgitter/Kontrollnetz
genauso gut möglich: 4x5, 3x8, 7x7, ...
Woraus nun der Algorithmus von de Casteljau für Flächen besteht, ist die wiederholte bilineare Interpolation:
pro Segment ein durch bilineare Interpolation erzeugter Punkt
(zum Beispiel für u=3/4 und v=3/4)
die neu erhaltenen grünen Punkte fassen wir vereinfacht als neues Kontrollnetz
auf
Weiter wird pro grünes Segment ein blauer Punkt durch bilineare
Interpolation gewonnen.
Ein Schritt später erhält man den Punkt FL(u,v) auf der
Bézierfläche.
Was passiert bei einem nicht quadratisch organisierten Kontrollnetz? Bei diesem entsteht im vorletzten Schritt ein Streckenzug - also ein Kontrollpolygon - für eine Bezierkurve. Danach geht es weiter wie gehabt mit der Berechnung des Punktes auf entsprechender Kurve:
Beispiel: 3x6 Kontrollgitter