Рисование кардинальных сплайнов
Фундаментальный сплайн — это кривая, которая проходит плавно через заданный набор точек. Чтобы нарисовать кардинальный сплайн, создайте объект Graphics и передайте адрес массива точек методу Graphics::D rawCurve . В следующем примере рисуется кардинальный сплайн в форме колокола, который проходит через пять назначенных точек:
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::D rawClosedCurve класса 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::D rawCurve . В следующем примере рисуется три кардинальных сплайна, которые проходят через один и тот же набор точек:
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, то точки будут соединены прямыми линиями.