2011-01-17 12 views
9

Ich muss drei Punkte durch eine glatte Kurve verbinden. Ich habe mir die gleichen Fragen angesehen, die bereits auf StackOverflow beantwortet wurden, aber alle schlagen vor, Path.quadTo() zu verwenden. Ich verstehe nicht, warum dies als eine richtige Antwort angesehen wird, da die Bezier-Kurve sich nur dem mittleren (Kontroll-) Punkt nähert, aber nicht durchgeht. In meinem Fall muss ich genau durchgehen. Wie kann ich das erreichen?Wie zeichne ich eine Kurve durch Baumpunkte in Android?

Antwort

4

Wahr, was Sie brauchen, ist Catmull Rom Splines, die garantiert werden, um durch jeden Punkt gehen. Ich kenne jedoch keine Funktion in der Android-API, um sie zu zeichnen. Sie können auch die quadTo-Funktion "tricksen" und einen virtuellen Mittelpunkt übergeben, den Sie entsprechend dem aktuellen und dem nächsten Punkt berechnen.

+1

Danke für einen Hinweis Ich habe das Internet gründlich durchsucht und bin mit der folgenden Berechnung des Kontrollpunkts für quadTo fertig: // Interpoliere drei Punkte mit dem zweiten Punkt bei dem angegebenen Parameterwert int [] interpoliere (int x0, int y0, int x1, int y1, int x2, int y2, doppelt t) { doppelt t1 = 1,0 -t; Doppel tSq = t * t; doppelter Nennwert = 2,0 * t * t1; \t int cx = (int) ((x1 - t1 * t1 * x0 - tSq * x2)/Nenn); int cy = (int) ((y1 - t1 * t1 * y0 - tSq * y2)/Nenn); \t zurückgeben new int [] {cx, cy}; } –

+1

@AndreyNovikov sollten Sie es als Antwort posten, um anderen zu helfen – Sameer

-1

Here eine sehr schöne, bebilderte Anleitung für Javascript, aber alle verwendeten Methoden sind üblich und es ist ein Analogon in Androids Path Class

Verwandte Themen