Thema: Delphi Spline Linien zeichnen

Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Spline Linien zeichnen

  Alt 9. Mai 2008, 03:00
Aber Vorsicht mit der Polynominterpolation! Sie wird zum einen ziemlich aufwendig mit steigender Punktzahl, und neigt zum anderen sehr zum "Überschwingen" je weiter ein Bereich vom Ursprung weg liegt. Sie lohnt sich im Grunde nur dann wirklich, wenn man vorher schon weiss, dass die Punkte Teile eines Polynoms n-ten Grades ist. Im allgemeinen Fall bietet sie mit steigender Wertemenge eine schlechtere Rekonstruktion.

Beziér-Splines eignen sich schon recht gut dafür, allerdings legt man normalerweise nicht ein Spline durch alle Punkte (eben weil die inneren nur approximiert werden), sondern man stückelt zwischen je 2 benachbarten Punkten. Die dann fehlenden (zwei inneren) "Kontrollpunkte" werden dann aus den je umgebenden Punkten abgeleitet, um zum einen differenzierbare Übergänge zu erhalten, und zum anderen möglichst gut die Tangente an den Grenzen nachzubilden. Zu Splines finde ich diese Seite z.B. recht informativ.

Für eindimensionale Reihen von Messwerten eignen sich, nicht zuletzt wegen deutlicher Einfachheit im Vergleich, ein paar andere Interpolationsverfahren, von denen die mit wichtigsten auf dieser Seite des gleichen Autors schön beschrieben sind. Zudem gibts zu jeder Variante auch noch C-Fetzen, die sich mit minmalem Aufwand übersetzen lassen. Das wäre für deinen Fall denke ich der sinnvollste Weg. Beziér-Splines setzt man üblicherweise dort ein, wo man durch die Kontrollpunkte dem User ein Maß an Interaktivität bieten will, wie z.B. in Grafikprogrammen bzw. DTP, oder im CAD Bereich. Für "nur" interpolieren finde ich sie etwas Overkill.

Edit: Die letztgenannten Varianten sind allerdings auch nicht alle immer generell geeignet. Bei der Kosinusinterpolation z.B. ergeben sich manchmal unschöne Übergänge, da die Kurve an den Messpunkten stets waagerecht verläuft. Daher eignet sie sich eigentlich nur für Fälle, in denen die Messpunkte lokale Extrema oder Wendestellen sind. Auch schwingt die kubische Variante mitunter gelegentlich über, wenn die Werte in Y-Richtung stark schwanken.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat