Фундаментальные сплайны в GDI+
Основной или фундаментальный сплайн — это последовательность отдельных кривых, объединенных в одну большую кривую. Сплайн задается массивом точек и параметром упругости. Фундаментальный сплайн гладко (не образуя изломов и разрывов) проходит через каждую точку массива. На приведенном ниже рисунке изображен набор точек и проходящий через каждую точку фундаментальный сплайн.
Физические и математические сплайны
Физический сплайн — это пластинка из дерева или другого гибкого материала. Физические сплайны использовались чертежниками для рисования кривых до появления удобных средств рисования математических сплайнов. Чертежники должны были размещать сплайн на листе бумаги и совмещать его с каждой точкой из заданного набора. Затем, проведя карандашом вдоль прижатой к бумаге кромки сплайна, можно было нарисовать нужную кривую. Один набор точек может порождать множество различных кривых в зависимости от свойств физического сплайна. Например, кривая, нарисованная с помощью жесткого сплайна будет отличаться от кривой, нарисованной с помощью очень гибкого сплайна.
Формулы, используемые для построения математических сплайнов, основаны на свойствах гибких стержней, за счет этого кривые, образованные математическими сплайнами, похожи на кривые, нарисованные с помощью физических сплайнов. Точно так же, как физические сплайны разной упругости будут порождать различные кривые для одного набора точек, математические сплайны с различным параметром упругости также будут порождать различные кривые, проходящие через один набор точек. На приведенном ниже рисунке изображены четыре фундаментальных сплайна, проходящих через один набор точек. Для каждого сплайна обозначена его упругость. Упругость, равная 0, соответствует бесконечной физической упругости, из-за которой соответствующая кривая соединяет каждые две соседние точки по кратчайшему пути (по прямой). Упругость, равная 1, соответствует отсутствию физической упругости, за счет которого сплайн занимает положение с наименьшим суммарным изгибом. Если значение упругости превышает 1, кривая начинает действовать как сдавленный берегами ручей, стремящийся увеличить изгиб своих излучин и течь по более длинному пути.
Все четыре сплайна на предыдущем рисунке обладают одинаковой касательной в начальной точке. Касательной к кривой в некоторой точке в простейшем случае называется линия, проходящая через эту точку и через ближайшую к ней точку на кривой. Аналогично, общей касательной к конечной точке называется линия, проведенная через конечную точку и предшествующую ей точку кривой.
Для рисования фундаментальнoго сплайна нужны объекты Graphics, Pen и массив объектов Point. Объект Graphics содержит метод DrawCurve, который выполняет непосредственное рисование сплайна, а объект Pen содержит атрибуты сплайна, такие как цвет и толщина линии. Массив объектов Point содержит все точки, через которые должна пройти кривая. В приведенном ниже примере кода демонстрируется рисование фундаментального сплайна, проходящего через точки, заданные в массиве myPointArray. Третьим параметром является упругость.
myGraphics.DrawCurve(myPen, myPointArray, 1.5F)
myGraphics.DrawCurve(myPen, myPointArray, 1.5f);