Построение кардинальных сплайнов
Кардинал сплайн — это кривая, которая проходит гладко через заданный набор точек. Чтобы нарисовать кардинальный сплайн, создайте объект графики и передайте адрес массива точек методу Graphics::DrawCurve. В следующем примере строится кардинальная сплайн-линия колоколообразной формы, которая проходит через пять назначенных точек.
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);
На следующем рисунке показана кривая и пять точек.
Вы можете использовать метод Graphics::DrawClosedCurve класса Graphics для рисования закрытой кардинальной сплайны. В закрытом кратном сплайне кривая продолжается через последнюю точку массива и подключается к первой точке в массиве.
В следующем примере показано, как нарисовать замкнутую кардинальную кривую, проходящую через шесть заданных точек.
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);
На следующем рисунке показана закрытая линия сплайна вместе с шестью точками:
Можно изменить изгиб кардинального сплайна, передав аргумент натяжения в метод Graphics::DrawCurve. В следующем примере рисуются три кардинальных сплайна, которые проходят через тот же набор точек.
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
На следующем рисунке показаны три сплайна вместе со значениями напряженности. Обратите внимание, что, когда напряжение равно 0, точки связаны прямыми линиями.