Necesito conectar tres puntos por una curva suave. He analizado las mismas preguntas ya respondidas en StackOverflow, pero todas sugieren usar Path.quadTo()
. No entiendo por qué esto se considera una respuesta correcta ya que la curva de Bezier solo se acerca al punto medio (control) pero no lo atraviesa. En mi caso, tengo que pasar exactamente por eso. Entonces, ¿cómo puedo lograr eso?¿Cómo dibujo una curva a través de puntos de árbol en Android?
Respuesta
Es cierto que lo que necesita son splines de Catmull Rom que están garantizados para pasar por cada punto. Sin embargo, no conozco ninguna función en la API de Android para dibujarlos. También podría "engañar" a la función quadTo y pasarle un punto medio virtual que calcule de acuerdo con el punto actual y el siguiente.
¿Qué hay de la función cubicTo (o rCubicTo si la necesita desde un punto relativo)? http://developer.android.com/reference/android/graphics/Path.html#cubicTo(float, flotador, flotación, flotador, flotación, flotador)
cubicTo también utiliza splines Bezier, que no proporcionan lo que necesita. –
Se necesitan 3 puntos. – C0deAttack
Here es un muy agradable, comos ilustrado JavaScript, pero todos los métodos utilizados son habituales y no es un análogo de androides Path Class
- 1. Dibujo (filtrado) 100k + puntos a MapView en Android
- 2. Dados 2 puntos, ¿cómo dibujo una línea en ángulo recto con respecto a la línea formada por los dos puntos?
- 3. Orientación de dibujo de árbol
- 4. Dibujar una curva perfecta conexión de tres puntos
- 5. Dibujo puntos LAT/LNG en una imagen
- 6. Número de puntos en la curva elíptica
- 7. Puntos de ajuste de la curva en el espacio 3D
- 8. Lona: dibujo de curva de beimo de Animate
- 9. Eliminar puntos de datos debajo de una curva con python
- 10. Cálculo de una curva cuádruple entre dos puntos xy
- 11. Ruta de dibujo de Android
- 12. Creando una curva spline entre 2 puntos en Three.js
- 13. ¿Cómo calcular el punto más cercano de una línea y curva? .. o curva y curva?
- 14. Cómo puedo obtener todos los puntos en la curva CGPath o la curva cuádruple
- 15. ¿Cómo calcular el punto a lo largo de una curva?
- 16. Caché de dibujo de Android
- 17. Posibilidad de una galería curva
- 18. OpenLayers: ¿cómo dibujo un polígono de los puntos LonLat existentes?
- 19. Cómo reducir el número de puntos en una curva mientras se preserva su forma general?
- 20. Puntos que se mueven a lo largo de una curva dentro de MATLAB
- 21. Ajusta una curva SVG a un polinomio
- 22. Girar un dibujo en Android
- 23. Cómo crear una curva entre 2 puntos en 2D y recuperar Puntos que hacen que la curva sea cada distancia d?
- 24. Rectángulo de dibujo entre dos puntos con ancho arbitrario
- 25. ¿Cómo conectar una impresora de red a través de Android?
- 26. Botón de dibujo de Android a lienzo con vista personalizada?
- 27. Mover un objeto en una trayectoria de curva de Bézier
- 28. Iterativamente suavizar una curva
- 29. ¿Cómo crear una vista de árbol en Android?
- 30. Convertir curva cuadrática a curva cúbica
Gracias por una pista , Busqué en Internet a fondo y finalicé con el siguiente cálculo del punto de control para quadTo: // interpolar tres puntos con el segundo punto en el valor de parámetro especificado int [] interpolate (int x0, int y0, int x1, int y1, int x2, int y2, doble t) { double t1 = 1.0 -t; double tSq = t * t; double denom = 2.0 * t * t1; \t int cx = (int) ((x1 - t1 * t1 * x0 - tSq * x2)/denom); int cy = (int) ((y1 - t1 * t1 * y0 - tSq * y2)/denom); \t return new int [] {cx, cy}; } –
@AndreyNovikov debe publicarlo como respuesta para ayudar a otros – Sameer