Поделиться через


Рисование сплайнов Безье

Сплайн Безье определяется четырьмя точками: начальной точкой, двумя контрольными точками и конечной точкой. В следующем примере рисуется сплайн Безье с начальной точкой (10, 100) и конечной точкой (200, 100). Контрольные точки: (100, 10) и (150, 150):

Point p1(10, 100);   // start point
Point c1(100, 10);   // first control point
Point c2(150, 150);  // second control point
Point p2(200, 100);  // end point
Pen pen(Color(255, 0, 0, 255));
graphics.DrawBezier(&pen, p1, c1, c2, p2);

На следующем рисунке показан полученный сплайн Безье вместе с начальной точкой, контрольными точками и конечной точкой. На рисунке также показан выпуклый корпус сплайна, который представляет собой многоугольник, сформированный путем соединения четырех точек прямыми линиями.

Иллюстрация, показывающая сплайн безье с двумя конечными точками и двумя контрольными точками

Метод DrawBeziers класса Graphics можно использовать для рисования последовательности соединенных сплайнов Безье. В следующем примере рисуется кривая, состоящая из двух соединенных сплайнов Безье. Конечная точка первого сплайна Безье является начальной точкой второго сплайна Безье.

Point p[] = {
   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
Pen pen(Color(255, 0, 0, 255));
graphics.DrawBeziers(&pen, p, 7);

На следующем рисунке показаны соединенные сплайны и семь точек.

Иллюстрация, показывающая конечные точки и контрольные точки двух сплайнов, которые разделяют одну из конечных точек