- •Цели и задачи компьютерной графики
- •Растровая и векторная визуализация изображений. Основные характеристики растровых изображений
- •Аддитивная цветовая модель rgb. Кодирование цвета. Палитра
- •Графические форматы. Работа с растровыми изображениями (форматы ddb, dib, bmp – файлы)
- •Понятие об инкрементных алгоритмах растеризации. Растровое представление отрезка (вывод алгоритма). Реализация алгоритма (Листинг функции по лабораторной работе)
- •Понятие об инкрементных алгоритмах растеризации. Алгоритм построения окружности методом средней точки (вывод алгоритма). Реализация алгоритма. (Листинг функции по лабораторной работе)
- •Стиль линии (перо). Алгоритмы вывода линий
- •Стиль заполнения, кисть, текстура
- •Геометрические основы компьютерной графики. Системы координат (декартова, полярная, сферическая) и векторы. Скалярное и векторное произведение векторов
- •Построение кривых. Интерполяционный полином Лагранжа. Достоинства и недостатки. (Листинг функции для реализации полинома Лагранжа по лабораторной работе).
- •Построение кривых. Интерполяционный кубический сплайн. (Листинг функции для реализации кубического сплайна по лабораторной работе).
- •Мировые и экранные координаты. Алгоритм пересчета мировых 2d-координат в оконные. Вывод и реализация (Листинг функции SpaceToWindow)
- •15. Физическая и логическая системы координат. Режимы отображения (без настройки параметров). Алгоритм преобразования координат в gdi и его связь с алгоритмом пересчёта мировых координат в оконные
- •16. Режимы отображения и настройка их параметров (функции класса cdc mfc). Функция SetMyMode, назначение, параметры и реализация
- •17. Аффинные преобразования на плоскости. Преобразование системы координат: смещение, растяжение-сжатие, поворот
- •18. Аффинные преобразования на плоскости. Преобразование объектов: смещение, растяжение-сжатие, поворот
- •19. Аффинные преобразования в пространстве. Преобразование системы координат: смещение, растяжение-сжатие, повороты вокруг осей координат
- •20. Аффинные преобразования в пространстве. Преобразования объектов: смещение, растяжение-сжатие, повороты вокруг осей координат
- •21. Основные типы проекций. Видовая система координат (вывод матрицы преобразования)
- •22. Перспективные преобразования (вывод матрицы преобразования). Схема пересчёта координат при переходе от мировых 3d-координат к экранным
- •23. Модели описания поверхностей
- •24. Каркасная визуализация трёхмерных изображений. Принцип удаления невидимых граней для выпуклого многогранника. Реализация
- •26. Закрашивание поверхностей. Модели отражения света
- •27. Закрашивание поверхностей. Вычисление нормалей и углов отражения. Реализация
- •28. Метод закрашивания Гуро
- •30. Графическая библиотека OpenGl. Структура glut-приложения. Пример
- •31. Графическая библиотека OpenGl. Рисование графических примитивов. Дисплейные списки. Удаление нелицевых граней. Вывод текста. Примеры
- •32. Графическая библиотека OpenGl. Системы координат. Модельно-видовые преобразования. Примеры
- •33. Графическая библиотека OpenGl. Проекции. Область вывода. Создание анимации. Примеры
- •34. Графическая библиотека OpenGl. Материалы и освещение. Примеры
- •35. Графическая библиотека OpenGl. Структура приложения с использованием библиотеки mfc
Построение кривых. Интерполяционный полином Лагранжа. Достоинства и недостатки. (Листинг функции для реализации полинома Лагранжа по лабораторной работе).
Будем
искать функцию
в виде полинома заданной степени
– интерполяционного
полинома,
т. е. положим что
,
где
(14.1)
и в соответствии с определением интерполирующей функции
(14.2)
Поскольку
степень полинома известна, то поиск
полинома сводится к нахождению набора
его коэффициентов
.
Французский математик Лагранж предложил способ построения интерполяционного полинома без предварительного вычисления коэффициентов ,
Будем
искать интерполяционный полином, который
в данном случае обозначим через
,
в виде
(14.6)
Неизвестные
коэффициенты
определим из условия
.
Последовательно
полагая
,
получим
Подставляя найденные значения коэффициентов в выражение (14.6) для многочлена , получим
(14.7)
Полученный таким образом полином называется интерполяционным полиномом Лагранжа.
Достоинства полинома Лагранжа:
график интерполяционного многочлена Лагранжа проходит через каждую точку массива;
конструируемая функция легко описывается (число подлежащих определению коэффициентов интерполяционного многочлена Лагранжа на сетке равно
);построенная функция имеет непрерывные производные любого порядка;
заданным массивом интерполяционный многочлен определен однозначно.
Недостатки полинома Лагранжа:
степень интерполяционного многочлена Лагранжа зависит от числа узлов сетки, и чем больше это число, тем выше степень интерполяционного многочлена и, значит, тем больше требуется вычислений;
изменение хотя бы одной точки в массиве требует полного пересчета коэффициентов интерполяционного многочлена Лагранжа.
Построение кривых. Интерполяционный кубический сплайн. (Листинг функции для реализации кубического сплайна по лабораторной работе).
Достоинства кубической сплайн-интерполяции
график построенной функции проходит через каждую точку массива;
конструируемая функция сравнительно легко описывается (число подлежащих определению коэффициентов равно
);заданным массивом построенная функция определена однозначно;
степень многочленов не зависит от числа узлов сетки и, следовательно, не изменяется при его увеличении;
построенная функция имеет непрерывные первые и вторые производные;
построенная функция обладает хорошими аппроксимационными свойствами.
К недостаткам кубических сплайнов является то, что они склонны осциллировать в окрестностях точки, существенно отличающейся от своих соседей.
Построение кривых. Геометрические сплайны. Кривая Безье. Геометрический алгоритм построения кривой Безье. (Листинг функции для реализации геометрического алгоритма построения кривой Безье по лабораторной работе)
Во многих задачах требование того, чтобы конструируемая кривая однозначно проектировалась соответственно на прямую, является слишком жестким. Расширяя допустимые классы кривых, естественно обратиться и к более общему способу описания их частичных фрагментов. В качестве нового способа задания кривых удобно использовать параметрический способ.
Формулировка задачи: по заданному множеству вершин
с учетом их нумерации построить гладкую кривую, которая, плавно изменяясь, последовательно проходила бы вблизи этих вершин и удовлетворяла некоторым дополнительным условиям. Эти условий могут иметь различный характер. Например, можно потребовать, чтобы искомая кривая проходила через все заданные вершины или, проходя через заданные вершины, касалась заданных направлений, являлась замкнутой или имела заданную регулярность и т. п.
При отыскании подходящего решения задачи приближения важную роль играет ломаная, звенья которой соединяют соседние вершины заданного набора. Эту ломаную называют контрольной или опорной, а ее вершины – контрольными или опорными.
Во многих случаях она довольно точно показывает, как будет проходить искомая кривая, что особенно полезно при решении задачи сглаживания. Каждая вершина заданного массива является либо внутренней либо граничной (концевой). В массиве Р вершины Р1 …, Pm-1 внутренние, а вершины Р0 и Рm - граничные (концевые).
Никаких ограничений на множество вершин не накладывается - они могут быть заданы как на плоскости, так и в пространстве, их взаимное расположение может быть совершенно произвольным, некоторые из вершин могут совпадать и т. д. Поэтому описание нужной кривой ищут в следующем виде:
(1)
где
- некоторые функциональные коэффициенты,
подлежащие определению.
Кривая Безье
Кривая Безье задается несколькими точками в N-мерном пространстве (классический вариант, описываемый в литературе – 4 точки, но мы, для удобства, помимо этого случая будем использовать вырожденные случаи из 3-х точек, а так же пользоваться введением дополнительных вершин), но нам так много не нужно, поэтому ограничимся тремя измерениями (хотя все приведенные алгоритмы будут справедливы и для векторов другой мерности).
Для начала рассмотрим самый простой случай (его иллюстрация этого случая приведена на рис. 1) – когда у нас 4 вершины.
Здесь p0 и p3 – начальная и конечная точки соответственно, а p1 и p2 – промежуточные точки. Разности же вершин p1-p0 и p2-p3 определяют крутизну кривой в этих точках. Сама же кривая задается следующим уравнением:
C(s) = p0 * ( 1 – s )3 + 3 * p1 * s * ( 1 – s )2 + 3 * p2 * s2 * ( 1 – s ) + p3 * s3
Несложно показать, что
C( 0 ) = p0
C( 1 ) = p3
C’( 0 ) = 3 * ( p1 - p0 )
C’( 1 ) = 3 * ( p3 – p2 )
Собственно как я и говорил – кривая проходит через конечные точки + имеется информация о крутизне кривой.
