Главная страница
Навигация по странице:

  • «КОМПЬЮТЕРНАЯ ГРАФИКА »

  • Лекция 1. Кубические сплайны. Лекция Кубические сплайны


    Скачать 179.53 Kb.
    НазваниеЛекция Кубические сплайны
    АнкорЛекция 1. Кубические сплайны
    Дата01.06.2022
    Размер179.53 Kb.
    Формат файлаdocx
    Имя файлаKompgraf1.docx
    ТипЛекция
    #562431

      1. Лекция 1. Кубические сплайны


    Рассмотрим задачу проведения гладких кривых по заданным граничным точкам, или задачу интерполяции. Поскольку через две точки можно провести сколь угодно много гладких кривых, то для решения этой задачи необходимо ограничить класс функций, которые будут определять искомую кривую. Математическими сплайнами называют функции, используемые для аппроксимации кривых. Важным их свойством является простота вычислений. На практике часто используют сплайны вида полиномов третьей степени. С их помощью довольно удобно проводить кривые, которые интуитивно соответствуют человеческому субъективному понятию гладкости. Термин “сплайн” происходит от английского spline – что означает гибкую полоску стали, которую применяли чертежники для проведения плавных кривых, например, для построения обводов кораблей или самолетов.

    Рассмотрим в начале сплайновую функцию для построения графика функции одной переменной. Пусть на плоскости задана последовательность точек , , причем . Определим искомую функцию , причем поставим два условия:

    1. Функция должна проходить через все заданные точки: , .

    2. Функция должна быть дважды непрерывно дифференцируема, то есть иметь непрерывную вторую производную на всем отрезке .

    На каждом из отрезков , будем искать нашу функцию в виде полинома третьей степени:

    .



    Рис. 40. Сплайновая функция.
    Задача построения полинома сводится к нахождению коэффициентов . Поскольку для каждого из отрезков необходимо найти 4 коэффициента , то всего количество искомых коэффициентов будет . Для нахождения всех коэффициентов определим соответствующее количество уравнений. Первые уравнений получаем из условий совпадения значений функции во внутренних узлах , . Следующие уравнений получаем аналогично из условий совпадения значений первых и вторых производных во внутренних узлах. Вместе с первым условием получаем уравнений. Недостающие два уравнения можно получить заданием значений первых производных в концевых точках отрезка . Так могут быть заданы граничные условия.

    Перейдем к более сложному случаю – заданию кривых в трехмерном пространстве. В случае функционального задания кривой возможны многозначности в случае самопересечений и неудобства при значениях производных равных . Ввиду этого будем искать функцию в параметрическом виде. Пусть - независимый параметр, такой что . Кубическим параметрическим сплайном назовем следующую систему уравнений:



    Координаты точек на кривой описываются вектором , а три производные задают координаты соответствующего касательного вектора в точке. Например, для координаты :

    .

    Одним из способов задания параметрического кубического сплайна является указание координат начальной и конечной точек, а также векторов касательных в них. Такой способ задания называется формой Эрмита. Обозначим концевые точки и , а касательные векторы в них и . Индексы выбраны таким образом с учетом дальнейшего изложения.

    Будем решать задачу нахождения четверки коэффициентов , так как для оставшихся двух уравнений коэффициенты находятся аналогично. Запишем условие для построения сплайна:

    , , , (*)

    Перепишем выражение для в векторном виде:

    .

    Обозначим вектор строку и вектор столбец коэффициентов , тогда .

    Из (*) следует, что , . Для касательных ,

    ,

    . Отсюда получаем векторно-матричное уравнение:

    .

    Эта система решается относительно нахождением обратной матрицы размером .

    .

    Здесь - эрмитова матрица, - геометрический вектор Эрмита. Подставим выражение для нахождения : . Аналогично для остальных координат: , .

    Выпишем в явном виде формулы для вычисления координат точек сплайна. Так как , то умножая справа на , получаем:

    .

    Четыре функции в скобках называются функциями сопряжения.

    Форму кривой, заданной в форме Эрмита, легко изменять если учитывать, что направление вектора касательной задает начальное направление, а модуль вектора касательной задает степень вытянутости кривой в направлении этого вектора, как показано на рис. 41.



    Рис. 41. Параметрический сплайн в форме Эрмита. Вытянутость кривой вправо обеспечивается тем, что .
    Рассмотрим форму Безье, которая отличается от формы Эрмита способом задания граничных условий, а именно, вместо векторов и вводятся точки (и соответствующие им радиус векторы) и , как показано на рис.42, такие что выполняются условия: и .



    Рис. 42. Параметрический сплайн в форме Безье.
    Переход от формы Эрмита к форме Безье осуществляется преобразованием:

    , (*)

    где - геометрический вектор Безье. Подставляя это в выражение для , получаем

    .

    Полезным свойством сплайнов в форме Безье является то что кривая всегда лежит внутри выпуклой оболочки, образованной четырехугольником . Это свойство можно доказать, пользуясь тем, что в выражении (*) коэффициенты принимают значения от 0 до 1 и их сумма равна единице.

    Заметим, что матрица вида

    - называется матрицей Безье.

    Методические указания к ЛАБОРАТОРНОЙ РАБОТЕ №1
    «Построение Сплайновых кривых»


    по дисциплине
    1. «КОМПЬЮТЕРНАЯ ГРАФИКА»


    Цель работы: изучение способов описания элементарных сплайновых кривых и получение практических навыков построения составных и рациональных сплайновых кривых.

    1. Теоретические положения

    По заданному множеству вершин с учетом их нумерации необходимо построить гладкую кривую, которая, плавно меняясь, последовательно проходила бы в близости этих вершин и удовлетворяла бы некоторым дополнительным условиям.

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

    Ограничение на множество вершин не накладывается: вершины могут располагаться как на плоскости, так и в пространстве, их взаимное расположение может быть произвольным; некоторые вершины могут и совпадать.

    Поэтому описание кривой ищется в параметрическом виде:

    ,

    где - весовая функция

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

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

    На рисунке 3.1. приведены способы задания четырех векторов для определения элементарной кубической кривой.



    Рис. 3.1. а) элементарная кривая Эрмита, b) элементарный В-сплайн,

    с) элементарная кривая Безье, d) элементарная кривая Catmull-Rom.

    Элементарная кубическая кривая Безье описывается уравнением вида:



    Элементарная В–сплайновая кривая описывается уравнением вида:



    Элементарная кривая Эрмита описывается уравнением вида:



    Элементарная кривая Catmull-Rom описывается уравнение вида:



    Построив кривую, ее можно подвергнуть аффинному преобразованию. Можно поступить по другому: сначала подвергнуть преобразованию заданный набор опорных вершин, только потом построить кривую.

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

    Рассматривая составную кривую у как целое, более естественно пользоваться единой параметризацией.

    Наиболее простой является параметризация с равноотстоящими целочисленными узлами. Для массива из nопорных вершин составная кубическая эрмитова кривая строится из n+1 элементарных фрагментов. В этом случае узлы параметризации определяются по формуле
    2. Задание на работу.

    Написать програму в MS Visual C++ для построения кубических сплайновых кривых: Эрмита, В-сплайн, Безье, Catmull-Rom по заданному массиву точек с учетом их нумерации.

    Заданный массив точек:

    Вариат/координаты точек

    координаты точки 1

    координаты точки 2

    координаты точки 3

    координаты точки 4

    координаты точки 5

    координаты точки 6

    координаты точки 7

    координаты точки 8

    координаты точки 9

    1

    -10; -14

    -8; -11

    -5; -6

    4; -2

    6; 2

    11; 4

    15; 10

    8; 6

    6; -1

    2

    4; -2

    8; 6

    11; 4

    15; 10

    6; 2

    4; -2

    -5; -6

    -8; -11

    -10; -14

    3

    2; -7

    -7; -10

    -12; -14

    -10; -8

    -5; -6

    -1; -4

    4; -2

    7; 6

    11; -2

    4

    -8; -11

    -11; -4

    -15; -10

    -6; -2

    -4; 2

    5; 6

    8; 11

    10; 14

    4; 7

    5

    6; 2

    11; 4

    8; 6

    6; -1

    -1; -4

    -4; 2

    -8; -6

    -11; -4

    -8; -11

    6

    10; 14

    8; 11

    5; 6

    -4; 2

    -6; -2

    -11; -4

    -15; -10

    -8; -6

    -6; 5

    7

    -15; -9

    -10; -14

    -8; -11

    -5; -6

    -2; 7

    4; -2

    7; 10

    12; 14

    10; 8

    8

    -10; -11

    -13; -4

    -15; -10

    -10; -14

    -6; -2

    -5; -6

    4; -2

    6; 2

    11; 4

    9

    -4; 2

    -8; -6

    -11; -4

    -15; -10

    -6; -2

    -4; 2

    5; 6

    8; -1

    10; 14

    10

    -5; -6

    -7; -10

    -8; -11

    -10; -8

    -2; 7

    -1; -4

    4; -2

    6; 2

    11; 4

    11

    -2; 7

    7; 10

    12; 14

    10; 8

    5; 6

    1; 4

    -4; 2

    -7; -6

    -11; -2

    12

    11; 5

    14; 3

    13; 6

    6; -2

    3; -4

    -4; 2

    -8; -6

    -7; -4

    -8; -11

    13

    -10; -14

    -5; -6

    4; -2

    6; 2

    11; 4

    8; 6

    6; -1

    -5; -6

    -1; -4

    14

    8; 11

    11; 4

    15; 10

    10; 14

    6; 2

    5; 6

    4; -2

    -6; 0

    -11; 4

    15

    12; 14

    11; 4

    8; 6

    -2; -2

    -5; -6

    -8; -11

    -4; -2

    0,-7

    3,5


    Отчет должен содержать: цель работы, задание на работу, текст отлаженной программы, результаты работы программы.




    написать администратору сайта