Compartir a través de


Dibujar curvas spline de Bézier

Una curva spline de Bézier queda definida por cuatro puntos: un punto inicial, dos puntos de control y un punto final. En el siguiente ejemplo se dibuja una curva spline de Bézier con un punto inicial (10, 100) y un punto final (200, 100). Los puntos de control son (100, 10) y (150, 150).

Dim p1 As New Point(10, 100) ' Start point
Dim c1 As New Point(100, 10) ' First control point
Dim c2 As New Point(150, 150) ' Second control point
Dim p2 As New Point(200, 100) ' End point

Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawBezier(pen, p1, c1, c2, p2)
[C#]
Point p1 = new Point(10, 100);   // Start point
Point c1 = new Point(100, 10);   // First control point
Point c2 = new Point(150, 150);  // Second control point
Point p2 = new Point(200, 100);  // End point

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawBezier(pen, p1, c1, c2, p2);

En la ilustración siguiente se muestra la curva spline de Bézier resultante junto con su punto inicial, sus puntos de control y su punto final. La ilustración muestra también la forma convexa de la curva spline, que es un polígono formado mediante la conexión de cuatro puntos con líneas rectas.

Se puede usar el método DrawBeziers de la clase Graphics para dibujar una secuencia de curvas spline de Bézier conectadas. En el ejemplo siguiente se dibuja una curva formada por dos curvas spline de Bézier conectadas. El punto final de la primera curva spline de Bézier es el punto inicial de la segunda.

' Point(10, 100) = start point of first spline
' Point(75, 10) = first control point of first spline
' Point(80, 50) = second control point of first spline

' Point(100, 150) = end point of first spline and start point of second spline

' Point(125, 80) = first control point of second spline
' Point(175, 200) = second control point of second spline
' Point(200, 80)} = end point of second spline
Dim p As Point() =  { _
   New Point(10, 100), _
   New Point(75, 10), _
   New Point(80, 50), _

   New Point(100, 150), _

   New Point(125, 80), _
   New Point(175, 200), _
   New Point(200, 80)}

Dim pen As New Pen(Color.Blue)
e.Graphics.DrawBeziers(pen, p)
[C#]
Point[] p = {
   new Point(10, 100),   // start point of first spline
   new Point(75, 10),    // first control point of first spline
   new Point(80, 50),    // second control point of first spline

   new Point(100, 150),  // end point of first spline and 
                         // start point of second spline

   new Point(125, 80),   // first control point of second spline
   new Point(175, 200),  // second control point of second spline
   new Point(200, 80)};  // end point of second spline

Pen pen = new Pen(Color.Blue);
e.Graphics.DrawBeziers(pen, p);

En la ilustración siguiente se muestran la curvas spline conectadas y los siete puntos.