Compartilhar via


Desenhando splines cardeais

Um spline cardinal é uma curva que passa suavemente por um determinado conjunto de pontos. Para desenhar um spline cardinal, crie um objeto Graphics e passe o endereço de uma matriz de pontos para o método Graphics::D rawCurve . O exemplo a seguir desenha um spline cardinal em forma de sino que passa por cinco pontos 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);

A ilustração a seguir mostra a curva e cinco pontos.

ilustração de um spline cardinal que passa por um conjunto de cinco pontos

Você pode usar o método Graphics::D rawClosedCurve da classe Graphics para desenhar um spline cardinal fechado. Em um spline cardinal fechado, a curva continua durante o último ponto na matriz e se conecta com o primeiro ponto na matriz.

O exemplo a seguir desenha um spline cardinal fechado que passa por seis pontos 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);

A ilustração a seguir mostra o spline fechado junto com os seis pontos:

ilustração de um spline cardinal fechado que passa por um conjunto de seis pontos

Você pode alterar a maneira como um spline cardinal se dobra passando um argumento de tensão para o método Graphics::D rawCurve . O exemplo a seguir desenha três splines cardeais que passam pelo mesmo conjunto de pontos:

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

A ilustração a seguir mostra os três splines junto com seus valores de tensão. Observe que, quando a tensão for 0, os pontos são conectados por linhas retas.

ilustração de três splines cardeais passando pelo mesmo conjunto de pontos, mas em tensões diferentes