parallele Bezier-Kurven < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:51 Mi 19.10.2005 | Autor: | pAt84 |
Hallo,
Ich arbeite momentan an einigen Projekten. Eins davon ist die Visualisierung von Bezierkurven und dem bilden eines Offsets. Ein Offset ist nicht mehr als eine zu der Bezier-Kurve parallel (im Sinne von gleicher Abstand) liegende zweite Bezier-Kurve.
Nun liest man ja unter anderem bei Wikipedia.org gern, dass so etwas nicht möglich ist. Speziell wird dabei gesagt, dass durch eine Verschiebung der Kontrollpunkte es nicht möglich ist eine parallele Bezier-Kurve zu erzeugen.
Ich habe mir das ganze in OpenGL visualisiert, dabei habe ich eine Kurve dupliziert und ihre Kontrollpunkte um einen festen Wert auf der Z-Ebene verschoben. (also die z-Koordinate um d erhöht).
Die Kurve sieht nun aber doch ziemlich parallel aus. Und das ist mein Problem, sollte sie es nicht sein?
Grüße aus dem fernen China
Patrick
|
|
|
|
Hallo pAt84,
> Hallo,
>
> Ich arbeite momentan an einigen Projekten. Eins davon ist
> die Visualisierung von Bezierkurven und dem bilden eines
> Offsets. Ein Offset ist nicht mehr als eine zu der
> Bezier-Kurve parallel (im Sinne von gleicher Abstand)
> liegende zweite Bezier-Kurve.
>
> Nun liest man ja unter anderem bei Wikipedia.org gern, dass
> so etwas nicht möglich ist. Speziell wird dabei gesagt,
> dass durch eine Verschiebung der Kontrollpunkte es nicht
> möglich ist eine parallele Bezier-Kurve zu erzeugen.
>
> Ich habe mir das ganze in OpenGL visualisiert, dabei habe
> ich eine Kurve dupliziert und ihre Kontrollpunkte um einen
> festen Wert auf der Z-Ebene verschoben. (also die
> z-Koordinate um d erhöht).
>
> Die Kurve sieht nun aber doch ziemlich parallel aus. Und
> das ist mein Problem, sollte sie es nicht sein?
die neue Bezier-Kurve ist parallel zu der bisherigen, was sich auch leicht rechnerisch nachweisen läßt.
Sei
[mm]C(t)\; = \;\sum\limits_{i = 0}^n {b_i \;\left( {\begin{array}{*{20}c}
n \\
i \\
\end{array} } \right)\;t^i \;\left( {1\; - \;t} \right)^{n - i} } [/mm]
die originale Bezier-Kurve.
Verschiebt man deren Kontrollpunkte [mm]b_{i}[/mm] um einen konstanten Vektor [mm]\vec{d}[/mm]
[mm]\widetilde{b_i }\; = \;b_i \; + \;\vec{d}[/mm]
so gilt für die verschobene Bezier-Kurve
[mm]
\begin{gathered}
\widetilde{C(t)}\; = \;\sum\limits_{i = 0}^n {\widetilde{b_i }\;\left( {\begin{array}{*{20}c}
n \\
i \\
\end{array} } \right)\;t^i \;\left( {1\; - \;t} \right)^{n - i} } \hfill \\
= \;\sum\limits_{i = 0}^n {\left( {b_i \; + \;\vec{d}} \right)\;\left( {\begin{array}{*{20}c}
n \\
i \\
\end{array} } \right)\;t^i \;\left( {1\; - \;t} \right)^{n - i} } \hfill \\
= \;\sum\limits_{i = 0}^n {b_i \;\left( {\begin{array}{*{20}c}
n \\
i \\
\end{array} } \right)\;t^i \;\left( {1\; - \;t} \right)^{n - i} } \; + \;\vec{d}\;\sum\limits_{i = 0}^n {\left( {\begin{array}{*{20}c}
n \\
i \\
\end{array} } \right)\;t^i \;\left( {1\; - \;t} \right)^{n - i} } \hfill \\
= \;C(t)\; + \;\vec{d} \hfill \\
\end{gathered} [/mm]
Hieraus ist zu sehen, daß die beiden Bezier-Kurven konstanten Abstand zueinander haben.
Gruß
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 14:31 Mi 19.10.2005 | Autor: | pAt84 |
Hallo,
Danke für die schnelle und ausführliche Antwort. Damit ist meine Vermutung bestätigt.
Wie erklärst du dir allerdings Sätze wie: "It isn't possible to create a Bézier curve that is parallel to another, except in the trivial cases of coincident parallel curves or straight line Bézier curves."?
Quelle: http://astronomy.swin.edu.au/~pbourke/curves/bezier/
Für mich macht das nur auf genau eine Weise Sinn, nämlich wenn man die Kontrollpunkte nicht kennt aber darum geht es bei diesen Aussagen nicht.
Patrick
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:16 Mi 19.10.2005 | Autor: | statler |
Auch hallo!
> Wie erklärst du dir allerdings Sätze wie: "It isn't
> possible to create a Bézier curve that is parallel to
> another, except in the trivial cases of coincident parallel
> curves or straight line Bézier curves."?
>
> Quelle:
> http://astronomy.swin.edu.au/~pbourke/curves/bezier/
Das erkläre ich mir so, daß 2 Kurven parallel heißen, wenn sie konstanten Abstand haben (wie bei par. Geraden). Aber was ist überhaupt der Abstand von 2 (krummen) Kurven? Man könnte, wenn man eine Kurve hat, z. B. so vorgehen, daß man in jedem Punkt die Normale nimmt und auf ihr einen festen Abstand d abträgt und die entstehenden Punkte dann miteinander verbindet. Das kann aber merkwürdige Gebilde ergeben. Versuch das doch mal bei der Normalparabel: nach außen sieht das noch ganz akzeptabel aus, aber nach innen bei großem d?
Wenn ich eine ebene Kurve in y-Richtung verschiebe, habe ich doch das Phänomen, daß dort, wo die Kurve sehr steil verläuft, Original und Bild dicht beieinander liegen, aber in den Extrempunkten den Abstand d haben. Das widerspricht meiner intuitiven Auffassung von "parallel".
> Für mich macht das nur auf genau eine Weise Sinn, nämlich
> wenn man die Kontrollpunkte nicht kennt aber darum geht es
> bei diesen Aussagen nicht.
Warnung: Ich bin kein Ingenieur und kenne Bézier-Kurven mehr vom Hörensagen.
Gruß aus HH-Harburg
Dieter
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:23 Mi 19.10.2005 | Autor: | pAt84 |
Und genau so ist es.
Ein Offset ist nämlich gerade nicht die parallele Kurve zur ursprünglichen, sondern vielmehr eine Kurve die der ursprünglichen "übergestülpt" wird. Das passiert genau auf die Art und Weise, die du angesprochen hast.
Gelesen hier: http://www.zju.edu.cn/jzus/fndpdf.php?vol=5&page=343
Vielen Dank an alle.
Patrick
|
|
|
|