Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bezier-Kurven

52 views
Skip to first unread message

Patrick Rive

unread,
Feb 6, 2006, 10:16:58 AM2/6/06
to
Hallo!
Em... Das Thema Bezierkurven is voll komplex.
ICh check das ja eh shcon alles nich.
Wie kann man dass denn alles eingrenzen. Also der Casteljau-algo gehört
ja auch dazu und B-Splines ich blick da nich durch.
UNd auf was kann man die Bezierkurven anwenden?
Mfg Patrick

Roman

unread,
Feb 6, 2006, 2:04:10 PM2/6/06
to
Patrick Rive wrote:
> Hallo!
> Em... Das Thema Bezierkurven is voll komplex.

Erst mal ist eine "Bezierkurve" nur eine bestimmte Art und Weise ein
Polynom darzustellen. Ich glaube von einem Bezierpolynom zu sprechen
wäre etwas besser, da ich nicht weiß wie der Begriff "Kurve" definiert ist.

Da Computer eh diskret sind spricht nichts dagegen stückweise definierte
polynomiale Funktionen zu verwenden, denn in einem Maschinentakt kann
von einer Näherung einer Funktion in einem bestimmten Argumentbereich
n
f(x) ~ sum alpha_i(x-a)^i, |x-a| <= alpha
i=0

zu einer anderen Näherung der selben Funktion in einem anderen
Argumentbereich gewechselt werden

n
f(x) ~ sum beta_j(x-b)^j, |x-a| <= beta
j=0

Man könnte nun auf die Idee kommen beispielsweise eine Funktion durch
eine Folge von Treppenfunktionen zu interpolieren, von denen eine jede
einzelne nur in einem kleinen Argumentbereich definiert ist.

Allerdings wäre solche Treppenfunktionen nicht stetig. Diesen Nachteil
kann man beheben indem man die "Stufen" der Treppenfunktionen durch
elementare Polygonzüge ersetzt wie beispielsweise B-Splines.

Diese haben allerdings den Nachteil, dass sie nicht diff.-bar sind,
weshalb man herging und die elementaren Polygonzüge durch Polynome
ersetzte. Wie man hierbei vorgehen kann zeigte S. Bernstein, als er 1912
den Weierstraßschen Approximationssatz bewies.

(n )
Sei (nü) der Binominialkoeffizient n über nü.

Dabei führt man die Bernstein Grundpolynome ein:
Sei nü = 0, 1, ..., n, t aus [0,1] und n aus |N, dann heißen die Polynome

(n )
b_(nü,n)(t) :=(nü)t^nü(1-t)^(n-nü)

Bernstein-Grundpolynome vom Grad n.

Mit den Eigenschaften
-b_(nü,n) hat eine nü-fache Nullstelle für t=0
-b_(nü,n) hat eine (n-nü)-fache Nulltelle für t=1
-b_(nü,n) ist strikt positiv für 0<t<1 und hat genau ein Maximum bei
t = nü/n.
-Die Polynome b_(nü,n) nü = 0,..., n sind lin. unabhängig bilden also
eine Basis vom Raum aller Polynome mit dem Grad n.

Und somit lässt sich jedes Polynom vom Grad n in der Form
n
p = sum beta_j*b_(nü,n)
j=0

darstellen. Ein Polynom in dieser Darstellung nennt man Bezierpolynom.

Der Algorithmus von de Casteljau bestimmt den Wert eines Polynoms in der
Bezier-Darstellung an der Stelle t.

> ICh check das ja eh shcon alles nich.

Das glaub ich Dir. In einer Numerikvorlesung umfasst eine Einführung in
diese Thematik ca 50-Seiten höhere Mathematik, was das unter "Schule" zu
suchen hat, ist mir nicht ganz klar.

Für eine Facharbeit würde ich Dir als Themenstellung empfehlen

- Die Untersuchung von Bernsteinpolynomen,
- Transformieren eines Polynoms der Monomdarstellung in die
Bezier-Darstellung
- Auswertung eines Polynoms in der Bezier-Darstellung an einer
bestimmten Stelle des Argumentbereichs mit dem de Casteljau
Algorithmus
- Die geometrische Interpretation dieses Algorithmuses

Damit bekommst Du locker 10 - 15 Seiten voll.

> UNd auf was kann man die Bezierkurven anwenden?

Die Bezier-Darstellung eines Polynoms hat besondere geometrische
Eigenschaften, die bei Graphikimplementierungen verwendet werden.


--
Gruesse Roman

Markus Steinborn

unread,
Feb 7, 2006, 4:10:24 AM2/7/06
to
Hallo Roman,

On Mon, 6 Feb 2006, Roman wrote:

> Ich glaube von einem Bezierpolynom zu sprechen wäre etwas
> besser, da ich nicht weiß wie der Begriff "Kurve" definiert ist.

Dann helfe ich jetzt mal kurz mit einer üblichen Definition von "Kurve"
aus:

Seien a,b \in \R reelle Zahlen mit a < b. Sei f:[a,b] -> \R^n stetig. Dann
heißt das Bild von f eine Kurve in \R^n - oder kurz:

eine Kurve ist das stetige Bild eines abgeschlossenen Intervalls.


Kanst also die Bezierkurven ohne Probleme auch Kurven nennen.


Grüße

Markus


PS: Das Bild einer Funktion ist die Menge aller Funktionswerte, die
angenommen werden (jetzt sehr informell, aber intutiv klar).

Roman

unread,
Feb 7, 2006, 5:54:33 AM2/7/06
to
Markus Steinborn wrote:
> Hallo Roman,
>
> On Mon, 6 Feb 2006, Roman wrote:
>
>> Ich glaube von einem Bezierpolynom zu sprechen wäre etwas besser, da
>> ich nicht weiß wie der Begriff "Kurve" definiert ist.
>
>
> Dann helfe ich jetzt mal kurz mit einer üblichen Definition von "Kurve"
> aus:
>
> Seien a,b \in \R reelle Zahlen mit a < b. Sei f:[a,b] -> \R^n stetig.
> Dann heißt das Bild von f eine Kurve in \R^n - oder kurz:
>
> eine Kurve ist das stetige Bild eines abgeschlossenen Intervalls.

Aha. Danke.

--
Gruesse Roman

Markus Steinborn

unread,
Feb 7, 2006, 5:08:26 AM2/7/06
to
Hallo Patrick,

On Mon, 6 Feb 2006, Patrick Rive wrote:

> Hallo!
> Em... Das Thema Bezierkurven is voll komplex.

Sag mal, in welchen Jahrganz/welche Schule schreibst Du denn die
Facharbeit? Wieviel Zeit hast Du dafür? Nur mal so, mit man versuchen
kann, einzuschätzen, was erwartet wird.

> Ich check das ja eh shcon alles nich.

die (eindimensionalen) Bezierkurven sind die einfachsten von allem. Fang
erstmal damit an.

Beim Lesen der folgenden Tipps zu Bezierkurven solltest Du vielleicht mit
dem Java-Applet aus Olivers Studienarbeit "rumspielen".

Das Java-Applet kann (leider) nur Nezierkurven mit 6 Kontrollpunkten
darstellen. Du wirst beim Rumspielen folgendes am Beispiel sehen:

(1) Die Kurve geht immer durch den ersten und letzten Kontrollpunkt.

(2) Im den meisten Fällen geht die Kurve nicht durch die übrigen
Kontrollpunkte.

(3) Durch Verschieben der unter (2) genannten Kontrollpunkte kann die
Kurve (lokal) verbogen werden.

(4) Die konvexe Hülle der Kontrollpunkte ist - falls sie Dir nicht bekannt
ist - einfach gesagt das kleinste Vieleck, in dem alle Kontrollpunkte
liegen. Das Java-Applet kann die konvexe Hülle anzeigen. Die Kurve
verläuft immer in der konvexen Hülle der Kontrollpunkte.

(5) Die Verbindungslienen zwischen den Kontrollpunkten sind für den
Algorithmus von Casteljau wichtig, ansonsten helfen sie aber nicht viel.

(6) Die Anzahl der Kontrollpunkte im Applet ist nicht zu klein gewählt:
Bei zu großer Kontrollpunktanzahl ist die Lokalität der Änderungen gegeben
- man möchte aber, dass sich nicht die ganze Kurve ändert, wenn man eine
kleine Änderung macht. Für längere Kurven geht man daher einen anderen
Weg: Man setzt mehrere passende kleine Kurven zusammen. [Hier würde ich
gerne auf eine verbesserte Version des Applets verweisen, aber die hab'
ich (noch immer) zu Hause liegen). Man würde sehen können, dass es viel
leichter ist, an der "Nahtstelle" einen Knick reinzubekommen, als es
knickfrei hinzubekommen. Dies ist ein Nachteil der Bezierkurven in der
praktischen Anwendung.

(7) De Casteljaus Algorithmus: Um grafisch was zu sehen, ist es IMHO eine
gute Idee, die Kontrollpunkte in Form eines U's unzuordnen - zumindest,
bis man weiss, wie der Algo läuft, dann sollte man es auch an anderen
Formen können. Zuerst wählt man ein t zwischen 0 und 1 (die Werte 0 und 1
sind beide recht uninteressant, daher klammere ich die mal aus). Jetzt
teilt man jede Verbindungsstrecke zwischen "benachbarten" Kontrollpunkten
im Verhältnis t:1 und markiert die so erhaltenen "neuen" Punkte. Verbinde
die neuen Punkte wieder durch neue Verbindungsstrecken. Diese teilt man
wieder im Verhältnis t:1, bekommt neue Punkte und verbindet wieder. Dies
macht man (Anzahl der Kontrollpunkte - 2) mal. Dann bleibem nur zwei
"neue" Punkte und eine Gerade übrig. Diese teilt man wieder im Verhältnis
t:1 ind landet auf der (noch unbekannten) Bezierkurve. Macht man obigen
Algo für genügend viele t, so hat man genügend viele Punkte der
Bezierkurve und kann sie zeichnen.

Äh, jetzt hab' ich de Casteljaus Algo kurz erklärt - wollte ich eigentlich
gar nicht.

Danach weißt Du grafisch schon ziemlich genau, wie Bezierkurven arbeiten
und kanst Dich der zugrundeliegenden Mathematik widmen.


> Wie kann man dass denn alles eingrenzen.

Bevor ich dazu was schreibe, warten wir lieber mal zu Punkt I Deine
Antwort ab (Abschätzung des erwarteten Umfangs) - OK? Ein kleiner Hinweis
steht aber schon weiter unten.

> Also der Casteljau-algo gehört ja auch dazu

unbedingt, aber er ist eigentlich recht einfach.

> und B-Splines ich blick da nich durch.

Je nach erwarteten Unfang kann man B-Splines wohl auch weglassen. Es ist
allerdings so: Jedes B-Spline läßt sich auch als Bezierkurve schreiben,
wobei die "Kontrollpunkte", "Stützpunkte" oder wie immer man die nennt (es
sind verschiedene Bezeichnungen üblich) allerdings erst umzurechnen sind.

> Und auf was kann man die Bezierkurven anwenden?

In der Anwendung ist oft die zweidimensionale Version gefragt, die dann
Bezierflächen heißen (ist klar, selbst de Casteljau hat bei seiner
Modellierung von Autokarossierien wohl hauptsächlich Flächen modelliert -
diese Aussage sollte aus dem Kontext, dass er Autokarossierien modelliert
hat, klar sein.)

Halt es wie "unsere" Dozentin Gitta Domik [ich habe ja schon eine
Studienarbeit von ihrer Internetseite Dir als Link gegeben]:

"Findet Nemo", "Toy Story I+II" und die anderen Pixar-Filme sind Pflicht,
gesehen zu haben. Die Figuren aus ihnen sind nämlich in der Tat mit
solchen Kurven (Bezierflächen oder B-Splines) modelliert.

In der Vorlesung Computergrafik II gibt Prof. Domik folgende
Anwendungsgebiete: Bei genauer Beschreibung von Objekten wie Flugzeug,
Auto, Werkzeug (z. B. CAD).


Grüße

Markus

Markus Steinborn

unread,
Feb 7, 2006, 5:53:51 AM2/7/06
to
Hallo alle,

On Mon, 6 Feb 2006, Roman wrote:

> Patrick Rive wrote:
>> Hallo!
>> Em... Das Thema Bezierkurven is voll komplex.
>
> Erst mal ist eine "Bezierkurve" nur eine bestimmte Art und Weise ein Polynom
> darzustellen.

Aus der Anwendung in der Computergrafik kenne ich das ein wenig anders:

Pro Koordinate, also x, y und eventuell z, wird ein Polynom genommen.
Diese Info sollte man vorweg haben, um keine Missverständnisse zu haben.

> Ich glaube von einem Bezierpolynom zu sprechen wäre etwas

> besser.

Öh, naja, nach der Klarstellung haben wir 2 oder 3 Polynome. Deswegen
nennt man es ja auch Kurve, weil es (oft) ja mehrere Polynome sind; also
der Begriff Polynom nicht so recht passt. Außerdem ist es praktisch:
Mehrere Kurven "zusammengeklebt" ergibt wieder 'ne Kurve.

Warum eigentlich mehrere Polynome: Versuch mal mit einem Polynom y=p(x)
eine senkrechte Linie darzustellen...

(x,y) = ( p1(t), p2(t) ). Wähle p1(t)=k, k konstant, p2(t)=t tuts
offensichtlich.


[Lange Hintergrundinfo weggelassen]

>
>> ICh check das ja eh shcon alles nich.
>
> Das glaub ich Dir. In einer Numerikvorlesung umfasst eine Einführung in diese
> Thematik ca 50-Seiten höhere Mathematik, was das unter "Schule" zu suchen
> hat, ist mir nicht ganz klar.
>

> Für eine Facharbeit würde ich Dir als Themenstellung empfehlen
>
> - Die Untersuchung von Bernsteinpolynomen,
> - Transformieren eines Polynoms der Monomdarstellung in die
> Bezier-Darstellung
> - Auswertung eines Polynoms in der Bezier-Darstellung an einer
> bestimmten Stelle des Argumentbereichs mit dem de Casteljau
> Algorithmus
> - Die geometrische Interpretation dieses Algorithmuses
>
> Damit bekommst Du locker 10 - 15 Seiten voll.

Mein Tipp: Machs anwendungsorientiert - Oliver hat in seiner Studienarbeit
auf Seite 7 einige Anforderungen aus der Praxis an eine solche
Repräsentation niedergeschrieben. Sie sind (beschränkt auf Kurven, Flächen
lassen wir mal außen vor) recht einfach einzusehen bzw. nachzurechnen.
Beispielsweise sind Polynome ja offensichtlich stetig, ja sogar
differenzierbar.


Die nötige Mathematik bekommst Du da rein, in dem Du die Frage aufwirfst,
wie man es hinbekommt, dass die Kurve durch die Punkte geht, die der
Designer es sich vorstellt.

Außerdem ist die Frage, wie man solche Kurvenstücke "glatt" zusammenklebt,
sehr praxisrelevant. Hier bietet es sich an, mit einen einfachen Beispiel
zu motivieren, dass das sich nicht "von selbst" ergibt. (Nö, schon wieder:
Man kann an den Applet, das ich zu Hause habe, sehen, wie die
Kontrollpunkte liegen, wenn man es richtig gemacht hat).

Grüße

Markus

0 new messages