2009-04-18 9 views
4

Ich weiß, es gibt Methoden zu approximate cubic Bezier curves (this page war auch eine gute Referenz), aber gibt es eine schnellere Methode, um eine Bezierkurve Grad N anzunähern? Oder können Sie nur die folgende Generalisierung verwenden?Approximierende Bezierkurven Grad N

Aus Wikipedia:

Die Bézier-Kurve vom Grad n kann wie folgt verallgemeinert werden. Gegeben Punkte P0, P1, ..., Pn, die Bézier-Kurve ist:

alt text

Antwort

2

Eine typische (allgemein) Art und Weise Auswertung von Ausdrücken wie dies zur Beschleunigung ist durch „vorwärts differenzier“ Ich hatte einen kurzen Blick bei aufgedreht this, die die richtige Art von Ansatz scheint, aber ich kann nicht für seine Genauigkeit bürgen, wie ich es nicht richtig gelesen habe. Hoffe, das hilft (Achtung, ich habe Ihre Links auch noch nicht vollständig gelesen, also könnte das nichts Neues sein ...)

0

Forward-Differenzierung ist sehr schnell, aber es hat einige Kosten zu gründen, und es kann ansammeln Fehler, wenn Sie entlang der Kurve gehen. Wenn Sie Floats mit doppelter Genauigkeit verwenden, müssen Sie sich keine großen Gedanken über das Fehlerproblem machen, aber wenn Sie einen Fixpunkt oder ganze Zahlen verwenden, kann dies erheblich sein.

Meiner Erfahrung nach lohnt es sich, die Forward-Differencing-Setup-Kosten nur für mehr als 2 * (N + 1) -Auswertungen zu zahlen; Wenn Sie zum Beispiel für eine (etwa) kubische Kurve weniger als acht Punkte auf der Kurve benötigen, ist es besser, die Kurve nur achtmal mit der Formel im ursprünglichen Beitrag auszuwerten.

Hinweis ist die Formel eigentlich ziemlich schnell, wenn Sie die Polynome & die Bedingungen für häufig verwendete Werte von N. sammeln erweitern aus