
- •Часть 1. Математические основы компьютерной графики
- •Введение
- •Часть 1.Математические основыкомпьютерной графики Глава 1. Элементы аналитической геометрии
- •Система координат
- •У Рис. 4. Вывод уравнения прямой в трехмерном пространстве.Равнение прямой
- •Уравнение плоскости
- •Некоторые элементарные задачи
- •Глава 2. Проецирование трехмерных объектов Классификация проекций
- •Вывод формул центральной перспективной проекции
- •Глава 3. Преобразования в пространстве Преобразования точек в разных системах координат
- •Двумерные матричные преобразования
- •Однородные координаты и матричное представление двумерных преобразований
- •Трехмерные матричные преобразования
- •Вопросы эффективности вычислений
- •Глава 4. Алгоритмы растровой графики Рисование отрезков прямых
- •Отсечение
- •Глава 5. Нормирующие преобразования видимого объема Видимый объем
- •Нормирование
- •Глава 6. Алгоритмы удаления невидимых ребер и граней Классификация
- •Алгоритм с использованиемz-буфера
- •Метод сортировки по глубине
- •Метод удаления невидимых граней выпуклых тел
- •Глава 7. Модели расчета освещенности граней трехмерных объектов Цветовой кубRgb
- •Эмпирическая модель расчета освещенности
- •Глава 8. Кубические сплайны Сплайновая функция
- •Сплайновые кривые Эрмита и Безье
- •Часть 2.Приложения компьютерной графики Глава 10. Оконный интерфейсWindows
- •Для чего использовать функцииWindowsApi?
- •Пример рисования на окнеcприменениемWindowsApIвDelphi.
- •Создание и отображение окна с использованием функцийWindowsApi.
- •Рисование на окне Windows
- •Пример рисования на окне с использованием объектов пера и кисти
- •Глава 11. Избранные главыOpenGl. Введение. Основные возможностиOpenGl
- •Контекст воспроизведения
- •Параметры визуализации
- •Глава 12. Модели освещенности граней трехмерных объектов вOpenGl
- •Модель освещенности с использованием цвета вершины
- •Получение эффекта полупрозрачности
- •Модель освещенности с использованием источника света и цвета вершины
- •Глава 13. Параметры отображения в OpenGl
- •Тип закраски: плоская или гладкая
- •Видимость граней: лицевые, нелицевые
- •Освещение: одностороннее или двустороннее
- •Расчет бликов: параллельно или с учетом положения наблюдателя
- •Грани: сплошные или проволочные
- •Глава 14. Пространственные геометрические преобразования вOpenGl
- •Глава 15. Наложение текстур вOpenGl
- •Загрузка образа текстуры
- •Параметры наложения текстуры
- •Список литературы
Глава 8. Кубические сплайны Сплайновая функция
Р
Рис.
41. Сплайновая функция.
Рассмотрим
в начале сплайновую функцию для построения
графика функции одной переменной. Пусть
на плоскости задана последовательность
точек
,
,
причем
.
Определим искомую функцию
,
причем поставим два условия:
Функция должна проходить через все заданные точки:
,
.
Функция должна быть дважды непрерывно дифференцируема, то есть иметь непрерывную вторую производную на всем отрезке
.
На
каждом из отрезков
,
будем искать функцию в виде полинома
третьей степени:
.
Задача
построения полинома сводится к нахождению
коэффициентов
.
Поскольку для каждого из отрезков
необходимо найти 4 коэффициента
,
то всего количество искомых коэффициентов
будет
.
Для нахождения всех коэффициентов
определим соответствующее количество
уравнений. Первые
уравнений получаем из условий совпадения
значений функции во внутренних узлах
,
.
Следующие
уравнений получаем аналогично из условий
совпадения значений первых и вторых
производных во внутренних узлах. Вместе
с первым условием получаем
уравнений. Недостающие два уравнения
можно получить заданием значений первых
производных в концевых точках отрезка
.
Так могут быть заданы граничные условия.
Сплайновые кривые Эрмита и Безье
Перейдем
к более сложному случаю – заданию кривых
в трехмерном пространстве. В случае
функционального задания кривой
возможны многозначности в случае
самопересечений и неудобства при
значениях производных равных
.
Ввиду этого будем искать функцию в
параметрическом виде. Пусть
- независимый параметр, такой что
.
Кубическим параметрическим сплайном
назовем следующую систему уравнений:
Координаты
точек на кривой описываются вектором
,
а три производные задают координаты
соответствующего касательного вектора
в точке. Например, для координаты
:
.
Одним
из способов задания параметрического
кубического сплайна является указание
координат начальной и конечной точек,
а также векторов касательных в них.
Такой способ задания называется формой
Эрмита. Обозначим концевые точки
и
,
а касательные векторы в них
и
.
Индексы выбраны таким образом с учетом
дальнейшего изложения.
Будем
решать задачу нахождения четверки
коэффициентов
,
так как для оставшихся двух уравнений
коэффициенты находятся аналогично.
Запишем условие для построения сплайна:
,
,
,
(*)
Перепишем
выражение для
в
векторном виде [3]:
.
Обозначим
вектор строку
и вектор столбец коэффициентов
,
тогда
.
Из
(*) следует, что
,
.
Для касательных
,
,
. Отсюда получаем
векторно-матричное уравнение:
.
Эта
система решается относительно
нахождением обратной матрицы размером
.
.
Здесь
- эрмитова матрица,
- геометрический вектор Эрмита. Подставим
выражение
для нахождения
:
.
Аналогично для остальных координат:
,
.
Выпишем
в явном виде формулы для вычисления
координат точек сплайна. Так как
,
то умножая справа на
,
получаем:
.
Четыре функции в скобках называются функциями сопряжения.
Форму кривой, заданной в форме Эрмита, легко изменять если учитывать, что направление вектора касательной задает начальное направление, а модуль вектора касательной задает степень вытянутости кривой в направлении этого вектора, как показано на рис. 42.
Р
Рис.
42. Параметрический сплайн в форме
Эрмита. Вытянутость кривой вправо
обеспечивается тем, что
Рис.
23. Параметрический сплайн в форме Безье..
и
вводятся
точки (и соответствующие им радиус
векторы)
и
,
как показано на рис.43, такие что выполняются
условия:
и
.
Переход от формы Эрмита к форме Безье осуществляется преобразованием:
, (*)
где
- геометрический вектор Безье. Подставляя
это в выражение для
,
получаем
.
Полезным
свойством сплайнов в форме Безье является
то что кривая всегда лежит внутри
выпуклой оболочки, образованной
четырехугольником
.
Это свойство можно доказать, пользуясь
тем, что в выражении (*) коэффициенты
принимают значения от 0 до 1 и их сумма
равна единице.
Заметим, что матрица вида
‑называется
матрицей Безье.