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