Compartir a través de


Dibujar splines cardinales

Una curva spline cardinal es una curva que pasa suavemente por un conjunto determinado de puntos. Para dibujar una spline cardinal, cree un objeto Graphics y pase la dirección de una matriz de puntos al método Graphics::D rawCurve . En el ejemplo siguiente se dibuja una spline cardinal en forma de campana que pasa a través de cinco puntos designados:

Point points[] = {Point(0, 100),
                  Point(50, 80),
                  Point(100, 20),
                  Point(150, 80),
                  Point(200, 100)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5);

En la ilustración siguiente se muestran la curva y los cinco puntos.

ilustración de una spline cardinal que pasa a través de un conjunto de cinco puntos

Puede usar el método Graphics::D rawClosedCurve de la clase Graphics para dibujar una spline cardinal cerrada. En una curva spline cardinal cerrada, la curva continúa hasta el último punto de la matriz y se conecta con el primer punto de la matriz.

En el ejemplo siguiente se dibuja una curva spline cardinal cerrada que pasa por seis puntos designados.

Point points[] = {Point(60, 60),
   Point(150, 80),
   Point(200, 40),
   Point(180, 120),
   Point(120, 100),
   Point(80, 160)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawClosedCurve(&pen, points, 6);

En la ilustración siguiente se muestran la curva spline cerrada y los seis puntos:

ilustración de una spline cardinal cerrada que pasa a través de un conjunto de seis puntos

Puede cambiar la forma en que se dobla una spline cardinal pasando un argumento de tensión al método Graphics::D rawCurve . En el ejemplo siguiente se dibujan tres splines cardinales que pasan por el mismo conjunto de puntos:

Point points[] = {Point(20, 50),
                  Point(100, 10),
                  Point(200, 100),
                  Point(300, 50),
                  Point(400, 80)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5, 0.0f);  // tension 0.0
graphics.DrawCurve(&pen, points, 5, 0.6f);  // tension 0.6
graphics.DrawCurve(&pen, points, 5, 1.0f);  // tension 1.0

En la ilustración siguiente se muestran las tres curvas spline y sus valores de tensión. Tenga en cuenta que, cuando la tensión es 0, los puntos están conectados por líneas rectas.

ilustración de tres splines cardinales que pasan por el mismo conjunto de puntos, pero en diferentes tensiones