Körper mathem. beschreiben < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo liebe Mathe-Gemeinde,
ich stehe vor einem numerischen Problem. Ich versuche den Verlauf eines Körpers bzw. einer Fläche mithilfe von mathematischen Funktionen zu beschreiben. Die Fläche ist durch n-Punkte definiert. Durch diese Punkte möchte ich mehrere aneinandergereihte Funktionen legen, die entsprechend der Position der Punkte angenähert werden sollen (siehe beigefügter Grafik).
Damit dies möglich ist, habe ich den Körper in mehrere Teilbereiche eingeteilt (durch die im Bild senkrecht zum Umriss verlaufenden Linien markiert).
Mein Ansatz wäre nun eine Interpolation mithilfe von Polynomen für jeden Abschnitt durchzuführen. Das Problem welches ich dabei sehe, ist das es X-Wert gibt, die öfters auftreten könnten (siehe Abschnitt 3 & 6 in der Grafik). Um den Verlauf der angesprochenen Abschnitte berechnen zu können, sollte der Körper bzw. die Fläche für die entsprechenden Bereiche möglicherweise rotiert werden.
Nun meine Frage: gehe ich mit meinem Ansatz in die richtige Richtung?
Gibt es möglicherweise noch andere Verfahren, mit denen man die Funktionen der einzelnen Abschnitte berechnen könnte (z.B. Splines)?
Viele Grüße,
Laus
|
|
|
|
Hallo KoerperLaus,
sieht aus wie ein Fußabdruck.
> ich stehe vor einem numerischen Problem. Ich versuche den
> Verlauf eines Körpers bzw. einer Fläche mithilfe von
> mathematischen Funktionen zu beschreiben.
Das sind recht unterschiedliche Aufgaben und Schwierigkeitsgrade. Eine Fläche in der Ebene ist natürlich leichter zu beschreiben als eine (gekrümmte) Fläche im Raum.
> Die Fläche ist
> durch n-Punkte definiert. Durch diese Punkte möchte ich
> mehrere aneinandergereihte Funktionen legen, die
> entsprechend der Position der Punkte angenähert werden
> sollen (siehe
> beigefügter Grafik).
>
> Damit dies möglich ist, habe ich den Körper in mehrere
> Teilbereiche eingeteilt (durch die im Bild senkrecht zum
> Umriss verlaufenden Linien markiert).
Hier hängt viel von den Unterteilungen ab.
> Mein Ansatz wäre nun eine Interpolation mithilfe von
> Polynomen für jeden Abschnitt durchzuführen. Das Problem
> welches ich dabei sehe, ist das es X-Wert gibt, die öfters
> auftreten könnten (siehe Abschnitt 3 & 6 in der Grafik).
Wieso ist das ein Problem?
> Um den Verlauf der angesprochenen Abschnitte berechnen zu
> können, sollte der Körper bzw. die Fläche für die
> entsprechenden Bereiche möglicherweise rotiert werden.
Ja, z.B. ist überall dort, wo es eine senkrechte Tangente gibt, eine Beschreibung durch eine Funktion x=f(y) klüger als umgekehrt.
> Nun meine Frage: gehe ich mit meinem Ansatz in die richtige
> Richtung?
> Gibt es möglicherweise noch andere Verfahren, mit denen
> man die Funktionen der einzelnen Abschnitte berechnen
> könnte (z.B. Splines)?
Die "übliche" abschnittsweise Beschreibung geschieht durch Bézierkurven. Meistens genügen quadratische, aber kubische sind in der Computergrafik auch noch sehr gängig.
Grüße
reverend
>
> Viele Grüße,
> Laus
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 08:58 Di 27.11.2012 | Autor: | Lutzi |
Hallo Leute,
könnt ihr mir den Unterschied zwischen den Bezierkurven und dem De-Casteljau-Algorithmus erklären?
Wenn ich es richtig verstehe, berechnet man mit dem De-Casteljau-Algorithmus die Bezierkurven anhand von Hilfspunkten oder besteht die Bezierkurve dann aus Hilfspunkten??
Anscheinend berechnet man nur die Hilfpunkte mit deren Hilfe man die Kurve zeichnen kann.
Um so mehr Hilfspunkte bzw. Folgen von Hilfspunkten (Pi(1), Pi(2), ...) berechnet werden, desto flacher ist die Kurve. Sehe ich das richtig? Oder hat das nur was mit der Auflösung zu tun, das die Kurve detailierter dargestellt wird?
Für die Berechnung von quadratischen Bezierkurven, benötige ich nur die bei Wikipedia beschriebene Formel C(t) = (P0 - 2*P1 + P2) * [mm] t^2 [/mm] + (-2*P0 + 2*P1) * t + P0 ?? Wenn ich diese Formel anwende erhalte ich Punkte, die die Bezierkurve beschreiben. Sind das jetzt die Punkte die auf der Kurve liegen oder sind es die Hilfspunkte die die Kurve beschreiben, aber nicht auf der Kurve liegen?
Des Weiteren erhält man halt nur punkte und keine Funktion die die Kurve beschreibt.
Lutzi
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Do 29.11.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
@ Lutzi:
Also meiner Meinung nach berechnet man mit dem De-Casteljau-Algorithmus die einzelnen Punkte der Bézierkurve und nicht die Hilfspunkte. Die Bézierkurve ist widerum eine Annäherung an die einzelnen Ausgangspunkte.
Der De-Casteljau-Algorithmus ist also das Verfahren zum berechnen der Punkte, auf denen die Kurve verläuft. Die Punkte kann man dann zu einem Polygonzug verbinden, um näherungsweise eine Funktion für die Kurve zu erhalten.
Mich würde nun aber eher interessieren worin der Unterschied zwischen einer Bézierkurve und den B-Splines existiert?
Hab gelesen, das beide Verfahren von grund auf gleich funktionieren. Nur das bei den B-Splines eine sogenannte B-Spline Funktion, statt des Bernsteinpolynoms verwendet wird.
Liege ich da richtig?
Viele Grüße
|
|
|
|
|
Ok,
also ich hab mich nochmal schlau gemacht. Möchte man eine Funktion für vier Punkte berechnen, kann man diese beispielsweise mittels Spline oder Bezier bestimmen.
Verwendet man jetzt kubische Splines, erhält man drei Teilabschnitte die zwischen je zwei der vier Punkte berechnet werden. Man muss also ein Gleichungssystem für jeden Teilabschnitt lösen. Die Gleichungen erhält man durch das einsetzen der zwei Punkte in Polynome dritten Grades und in deren erste und zweite Ableitung.
Bei Bezier ist es anders. Hier kann man die Kurve nicht durch zwei Punkte legen. Hier muss man mindestens drei Punkte verwenden um eine Kurve zu bekommen (d.h. ein start-, ein steuer- und ein endpunkt). Rein theoretisch kann man die Kurve gleich anhand der vier Punkte berechnen. Die Kurve läuft somit durch den Start- und den Endpunkt. Die beiden Steuerpunkte lenke die Kurve in die entsprechenden Richtungen ab.
Der Vorteil von den Splines ist die Glattheit zwischen den Fuktionen an einem Punkt. Desweiteren verläuft die Bezier Kurve nicht wie die Splines durch alle Punkte, sondern wird von Steuerpunkten abgelenkt.
Nun hätte ich noch eine Frage:
Gibt es eine Möglichkeit die Funktion für die Splines kompfortabler zu erhalten, als durch das Lösen des Gleichungssystems? Die reinen Polynome kann man ja mittels dem Newton Algorithmus bzw. mithilfe des Schemas der dividierten Differenzen lösen. Kann man den Algorithmus auch auf Splines anwenden, um diese einfacher und schneller zu berechnen?
Gruß und einen schönen Abend,
Laus
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:20 So 23.12.2012 | Autor: | M.Rex |
Hallo
> Ok,
> also ich hab mich nochmal schlau gemacht. Möchte man eine
> Funktion für vier Punkte berechnen, kann man diese
> beispielsweise mittels Spline oder Bezier bestimmen.
Das stimmt so.
>
> Verwendet man jetzt kubische Splines, erhält man drei
> Teilabschnitte die zwischen je zwei der vier Punkte
> berechnet werden. Man muss also ein Gleichungssystem für
> jeden Teilabschnitt lösen. Die Gleichungen erhält man
> durch das einsetzen der zwei Punkte in Polynome dritten
> Grades und in deren erste und zweite Ableitung.
>
> Bei Bezier ist es anders. Hier kann man die Kurve nicht
> durch zwei Punkte legen. Hier muss man mindestens drei
> Punkte verwenden um eine Kurve zu bekommen (d.h. ein
> start-, ein steuer- und ein endpunkt). Rein theoretisch
> kann man die Kurve gleich anhand der vier Punkte berechnen.
> Die Kurve läuft somit durch den Start- und den Endpunkt.
> Die beiden Steuerpunkte lenke die Kurve in die
> entsprechenden Richtungen ab.
Auch das ist ok.
Dazu mal folgender Link:
http://www2.cs.uni-paderborn.de/cs/info-cd/vorlesungen/domik/computergrafik/node78.htm
>
> Der Vorteil von den Splines ist die Glattheit zwischen den
> Fuktionen an einem Punkt. Desweiteren verläuft die Bezier
> Kurve nicht wie die Splines durch alle Punkte, sondern wird
> von Steuerpunkten abgelenkt.
Auch das stimmt
>
>
>
> Nun hätte ich noch eine Frage:
> Gibt es eine Möglichkeit die Funktion für die Splines
> kompfortabler zu erhalten, als durch das Lösen des
> Gleichungssystems?
Vermutlich im allgemeinen nicht. Es mag aber Sonderfälle geben, bei denen das durch irgendwelche Besonderheiten einfacher geht.
> Die reinen Polynome kann man ja mittels
> dem Newton Algorithmus bzw. mithilfe des Schemas der
> dividierten Differenzen lösen. Kann man den Algorithmus
> auch auf Splines anwenden, um diese einfacher und schneller
> zu berechnen?
Bei der Spline-Interpolation tauchen meist nur lineare Gleichungssysteme auf, diese kannst du dann mit dem Gauß-Verfahren lösen.
>
> Gruß und einen schönen Abend,
> Laus
Marius
|
|
|
|
|
Hi Marius,
ich danke vielmals für dein Feedback! Hat mir sehr weitergeholfen.
Ich habe jedoch ein Verfahren gefunden, welches die Berechnung der Splines vereinfachen soll. Besser gesagt, wird nicht die Berechnung vereinfacht, sondern die Matrix die für den Gauß-Algorithmus verwendet wird. Habs mal in einem neuen Thread weitergeführt.
Viele Grüße
Klaus
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:20 Do 03.01.2013 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|