¿Cómo dibujo una B-Spline usando curvas Bezier?

Mi aplicación Flash recibe datos B-spline de una aplicación externa, pero la API de dibujo Flash solo permite curvas Bézier cuadráticas usando el método Graphics # curveTo ().

¿Es posible convertir un B-spline en una serie de llamadas a curveTo ()?

preguntado el 27 de agosto de 11 a las 22:08

1 Respuestas

Hay varios tipos de B-splines. Aún así, imagino que dividirá el B-spline en Bezier. Iterarías a través de la curva, y para cada uno atravesarías los puntos con cierto detalle para poder dibujar la curva a partir de líneas.

Aquí hay un breve fragmento:

private function curve(control1:Point,anchor1:Point,control2:Point,anchor2:Point,t:Number):Point{
            var result:Point = new Point();
            var tSquared:Number = t*t;
            var tCubed:Number = t*t*t;
            result.x = tCubed*(anchor2.x+3*(control1.x-control2.x)-anchor1.x)
                                        +3*tSquared*(anchor1.x-2*control1.x+control2.x)
                                        +3*y*(control1.x-anchor1.x)+anchor1.x;
            result.y = tCubed*(anchor2.y+3*(control1.y-control2.y)-anchor1.y)
                                        +3*tSquared*(anchor1.y-2*control1.y+control2.y)
                                        +3*y*(control1.y-anchor1.y)+anchor1.y;
            return result;
        }

Echa un vistazo a Entrada de blog dibujando una curva cúbica de Paul Tondeur y las referencias allí también.

HTH

Respondido 28 ago 11, 04:08

+1. buen recurso. De interés, las curvas Bézier cúbicas son (finalmente) compatibles con la API de dibujo en Flash Player 11. - Trozo grueso

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.