2011-01-17 22 views
9

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

4

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.

+1

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}; } –

+1

@AndreyNovikov debe publicarlo como respuesta para ayudar a otros – Sameer

-1

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

Cuestiones relacionadas