| -1 3 -3 1 | | P1 |
| 3 -6 3 0 | | Z12 | Bezier(t) = | t^3 t^2 t 1 | * | -3 3 0 0 | * | Z21 | | 1 0 0 0 | | P2 | |
... oder wer's lieber so hat:
Bezier(t)
= (1 - t)^3 * P1 + (3 * t * (1 - t)^2) * Z12 + (3 * (t^2) * (1 - t)) * Z21 + (t^3) * P2 |
delta1 =
Bezier(step) - f(0) delta2 = (Bezier(2*step)-Bezier(step)) - delta1 delta3 = ( (Bezier(3*step)-Bezier(2*step)) - (delta2+delta1) ) - delta2 |
|
![]() |
![]() |
|||||||||
|
|
|
![]() |
![]() |
|
Berechnung von P22, wobei die Winkel alpha und beta möglichst rechtwinklig sein sollten. | |
Methode, um alpha
und beta möglichst rechtwinklig zu
bekommen: Verlängern der Linien P11-P12 und P11-P21
(abhängig vom Winkel gamma), von dort
die Lote auf die Schnittlinie von E12 und E21 fällen und
den Mittelpunkt der so gefundenen Punkte A und B bilden. |
![]() |
![]() |
|
16 Kontrollpunkte, wobei alle nicht Eckpunkte mit Hilfe der Eckpunkte P11, P41, P14, P44, sowie der Normalenvektoren N11, N41, N14, N44 berechnet wurden | Gitter-Darstellung der resultierenden Bezier-Oberfläche |
![]() |
![]() |
|
Die
"Akupunkturnadeln" sind die Normalenvektoren (dies ist übrigens ein Snapshot eines Editors den ich gerade mit Java3D bastle) |
|
Zur Verdeutlichung
sind hier die Flächen jeweils mit einer
zufällig gewählten Farbe eingefärbt
worden |
![]() "Clown"
Hilfspunkte liegen teilweise auf der "falschen Seite" der Eckpunkte |
![]() "Alien I"
Versuche die Flächen aus einzelnen Bezier-Kurven aufzubauen führen zu "Instabilitäten" (Löcher, Risse, Kiemen, ...) |
![]() "Alien II"
(Selbe Problematik wie bei "Alien I") |
|
![]() "Stubsnase"
(Selbe Problematik wie bei "Alien I & II") |
||
"Clown" Hilfspunkte liegen teilweise auf der "falschen Seite" der Eckpunkte |
|
"Alien I" Versuche die Flächen aus einzelnen Bezier-Kurven aufzubauen führen zu "Instabilitäten" (Löcher, Risse, Kiemen, ...) |
|
"Alien
II" (Selbe Problematik wie bei "Alien I") |
"Stubsnase"
(Selbe
Problematik wie bei "Alien I & II")
|
|
![]() "Lochmaske"
Erster Versuch mit echten Bezier-Flächen - die dreieckigen Flächen glänzen durch Abwesenheit, während die viereckigen sich unangemessen aufplustern (innere Hilfspunkte falsch berechnet) |
![]() "Papier"
Versuch die Kanten zwischen Flächen zu bekämpfen indem die Flächen zunächst in kleinere Teilflächen aufgeteilt werden ... gescheitert ... (wäre aber prinzipiell nochmal eine Überlegung wert) |
![]() "Rund"
Variationen der Abstände der Rand-Hilfspunkte zu den Eckpunkten: hier zu viel (2/3*cos(alpha)) / h)... |
![]() "Eckig"
...und hier zu wenig (0.1*cos(alpha)) (vgl. Kapitel "Zusammenfügen von Bezier-Kurven") |
|||
"Lochmaske" Erster Versuch mit echten Bezier-Flächen - die dreieckigen Flächen glänzen durch Abwesenheit, während die viereckigen sich unangemessen aufplustern (innere Hilfspunkte falsch berechnet) |
"Papier" Versuch die Kanten zwischen Flächen zu bekämpfen indem die Flächen zunächst in kleinere Teilflächen aufgeteilt werden ... gescheitert ... (wäre aber prinzipiell nochmal eine Überlegung wert) |
"Rund" Variationen der Abstände der Rand-Hilfspunkte zu den Eckpunkten: hier zu viel (2/3*cos(alpha)) / h)... |
"Eckig" ...und hier zu wenig (0.1*cos(alpha)) (vgl. Zusammenfügen von Bezier-Kurven) |
|||
![]() "Spocky"
eine eher instabile Variante die inneren Hilfspunkte zu berechnen... |
![]() "Hexe"
...und gleich noch eine instabile Variante die inneren Hilfspunkte zu berechnen... |
![]() "Zerstreut"
Wenn man die Punkte (durch einen Fehler in der Einleseroutine) komplett durcheinander wirft kann auch mal sowas rauskommen... |
![]() "Innenansichten"
Das ist nun ausnahmsweise mal kein Fehler in der Bezier-Berechnung, sondern einfach die Innenansicht |
|||
"Spocky" eine eher instabile Variante die inneren Hilfspunkte zu berechnen... |
"Hexe" ...und gleich noch eine instabile Variante die inneren Hilfspunkte zu berechnen... |
"Zerstreut" Wenn man die Punkte (durch einen Fehler in der Einleseroutine) komplett durcheinander wirft kann auch mal sowas rauskommen... |
"Innenansichten" Das ist nun ausnahmsweise mal kein Fehler in der Bezier-Berechnung, sondern einfach die Innenansicht |
|||
![]() "Verflossen"
Auch das ist kein Fehler bei der Bezier-Flächenberechnung sondern extreme/falsche perspektivische Verzerrungen. In diesem Fall liegt der Fluchtpunkt hinter der eigentlichen Gesichtsfläche, aber noch zwischen den Ohren... |
![]() "Jabba"
...und hier liegt der Fluchtpunkt sogar vor dem Gesicht, praktisch in der Nasenspitze. |
![]() "Zerknirscht"
Ein weiterer Versuch die Glattheit dadurch zu erhöhen, dass die Flächen automatisch in kleinere Flächen unterteilt werden. Hier ist noch ein gravierender Fehler in der Normalen-Vektor-Berechnung enthalten. |
![]() "Stirnrunzeln"
Und noch ein Versuch die Glattheit dadurch zu erhöhen, dass die Flächen automatisch in kleinere Flächen unterteilt werden. So sieht das - bis auf ein paar Artefakte - schon ganz gut aus. Allerdings werden die Stellen die eine Glättung besonders nötig hätten doch eher unruhig... |
|||
"Verflossen" Auch das ist kein Fehler bei der Bezier-Flächenberechnung sondern extreme/falsche perspektivische Verzerrungen. In diesem Fall liegt der Fluchtpunkt hinter der eigentlichen Gesichtsfläche, aber noch zwischen den Ohren... |
"Jabba" ...und hier liegt der Fluchtpunkt sogar vor dem Gesicht, praktisch in der Nasenspitze. |
"Zerknirscht" Ein weiterer Versuch die Glattheit dadurch zu erhöhen, dass die Flächen automatisch in kleinere Flächen unterteilt werden. Hier ist noch ein gravierender Fehler in der Normalen-Vektor-Berechnung enthalten. |
"Stirnrunzeln" Und noch ein Versuch die Glattheit dadurch zu erhöhen, dass die Flächen automatisch in kleinere Flächen unterteilt werden. So sieht das - bis auf ein paar Artefakte - schon ganz gut aus. Allerdings werden die Stellen die eine Glättung besonders nötig hätten doch eher unruhig... |
|||
![]() "Alien III"
Der Kollege hat alle Normalenvektoren nach links bzw. rechts gezogen bekommen... (sehr unangenehm das) |
![]() "Alien IV"
Und dieser Kollege hat nun alle Normalenvektoren nach oben bzw. unten gezogen bekommen... (auch nicht schön) |
![]() "Freddy"
Hier sind einige Punkte verrutscht und die Normalenvektoren "verdreht", was doch zu kleineren Hautunreinheiten führt... |
![]() "Golfball"
Automatisches Splitten der Bezierflächen, wobei aber (zu Testzwecken absichtlich) die Normalenvektoren des jeweils mittleren Punktes einer gesplitteten Bezierfläche auf (0,0,-1) gesetzt wurden |
|||
"Alien III" Der Kollege hat alle Normalenvektoren nach links bzw. rechts gezogen bekommen... (sehr unangenehm das) |
"Alien IV" Und dieser Kollege hat nun alle Normalenvektoren nach oben bzw. unten gezogen bekommen... (auch nicht schön) |
"Freddy" Hier sind einige Punkte verrutscht und die Normalenvektoren "verdreht", was doch zu kleineren Hautunreinheiten führt... |
"Golf" Automatisches Splitten der Bezierflächen, wobei aber (zu Testzwecken absichtlich) die Normalenvektoren des jeweils mittleren Punktes einer gesplitteten Bezierfläche auf (0,0,-1) gesetzt wurden |