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
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.
Was ist mit der Funktion cubicTo (oder rCubicTo, wenn Sie es von einem relativen Punkt benötigen)? http://developer.android.com/reference/android/graphics/Path.html#cubicTo(float, Schwimmer, Schwimmer, Schwimmer, Schwimmer, Schwimmer) ist
CubicTo verwendet auch Bezier Splines, die nicht bieten, was er braucht. –
Es dauert 3 Punkte. – C0deAttack
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
- 1. Wie zeichne ich eine Bezier-Kurve programmgesteuert in WPF?
- 2. Wie zeichne ich eine kubische Bézier-Kurve in wxWidgets?
- 3. Wie zeichne ich eine Anti-Alias-Bezier-Kurve im Raster?
- 4. Zeichne Gaußsche Kurve in Java
- 5. Wie Bézier Kurve in Android
- 6. Wie zeichne ich eine Lernkurve in R?
- 7. Wie zeichne Bezier-Kurve um mehrere Punkte?
- 8. Wie eine glatte Kurve, die durch einige Punkte
- 9. Wie mache ich eine Linie Kurve durch Punkte
- 10. Wie zeichne parametrische 3D-Kurve mit Glättung in R?
- 11. Wie zeichne ich eine ROC-Kurve mit Tensorflow und scikit-learn?
- 12. Wie zeichne ich eine STOCK historische Grafik in Android App?
- 13. Wie zeichne Graph in Android?
- 14. Wie zeichne ich eine Dichtekarte in Python?
- 15. Wie zeichne ich Text in eine Unteransicht?
- 16. Wie zeichne ich eine Bitmap auf Android mit OpenGL
- 17. Android - Ressourcen - Wie zeichne ich mit URI?
- 18. Wie zeichne ich leere Zahlen auf Android?
- 19. Wie zeichnet man eine Kurve, die drei Punkte durchläuft?
- 20. Wie zeichne ich vertikale Linie zwischen zwei Tasten in Android
- 21. Iterativ eine Kurve glätten
- 22. Wie zeichne ich eine Linie zwischen ListBoxItems
- 23. Java: Wie zeichne ich eine Leinwand?
- 24. Wie zeichne ich eine Zeichenfolge zwischen Klammern?
- 25. Wie zeichne ich eine Spirale mit Opengl
- 26. Wie glätten Sie eine Kurve
- 27. Wie zeichne ich eine Zeichenkette ohne Padding
- 28. Wie zeichne ich über eine TextBox
- 29. Wie zeichne ich eine Verbindung zwischen Zeichenelementen?
- 30. Wie zeichne ich Kreis für Bildschirm in Android?
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}; } –
@AndreyNovikov sollten Sie es als Antwort posten, um anderen zu helfen – Sameer