
- •Монохроматическое излучение?
- •Три атрибута цвета?
- •Что такое цветовой тон?
- •Основные законы колориметрии?
- •Аддитивная цветовая модель rgb?
- •Пропорции смешения цветов и их трехмерное представление?
- •Трехцветные коэффициенты смешивания rgb?
- •Недостатки и достоинства rgb?
- •Цветовая модель cmy?
- •Цветовая модель hsv?
- •Особенности монохромных моделей?
- •Компонентное кодирование цветов. Палитра?
- •Особенности цветопередачи в полиграфии?
- •Понятие дизеринга?
- •Простейший дизеринг?
- •Определение количества градаций цвета?
- •Формула цвета для двух компонент в зависимости от размера ячейки?
- •Линиатура растра?
- •Реализация дизеринга в графической системе?
- •Диагональные растры?
- •Частотная модуляция?
- •Записать в общем виде выражение аффинного преобразование координат?
- •Какие преобразования включают аффинные?
- •Записать в общем виде выражение для поворота угла ?
- •Записать в матричном виде аффинные преобразования?
- •Что такое однородные координаты?
- •Показать вид матрицы вращения в однородных координатах?
- •Показать вид матрицы растяжения-сжатия и отражения вокруг оси Оу в однородных координатах?
- •Показать вид матрицы переноса в однородных координатах?
- •Выписать в матричном виде преобразование для поворота вокруг произвольной точки на угол и указать, что означает каждая из матриц?
- •Выписать вид матриц для вращения в пространстве?
- •Указать, в чем состоит смысл проектирования?
- •Какая проекция называется ортографической?
- •Какая проекция называется аксонометрической?
- •Какая проекция называется изометрической?
- •Какая проекция называется косоугольной?
- •Какая проекция называется кабинетной?
- •Выписать матрицы проектирования вдоль координатных осей?
- •Какую информацию нужно задать для проективного преобразования пространственного объекта?
- •Привести вид матрицы проектирования для косоугольной проекции?
- •Выписать вид матрицы проектирования в однородных координатах и докажите, что она осуществляет проектирование в двумерные координаты?
- •Понятие соседей и связности?
- •Принцип работы четырехсвязного алгоритма Брезенхэма?
- •Принцип работы восьмисвязного алгоритма Брезенхэма?
- •Пример восьмисьмисвязного алгоритма?
- •Построение окружности?
- •Построение эллипса?
- •Р ис.6.4.Четверть эллипса с касательной и нормалью
- •Кривая Безье?
- •Геометрический алгоритм?
- •Задача вывода фигур?
- •Простейший алгоритм закрашивания?
- •Волновой алгоритм закрашивания?
- •Алгоритм закрашивания линиями?
- •Заполнение прямоугольника и круга?
- •Заполнение полигонов?
- •Учет вершин полигона?
- •Ускорение работы алгоритма?
- •Аналитическая модель описания поверхности?
- •Аппроксимация сплайна?
- •Кубический сплайн?
- •Векторная полигональная модель?
- •Первый способ описания структур данных в векторной модели?
- •Второй и третий способы описания структур данных в векторной модели?
- •Достоинства и недостатки векторной модели?
- •Воксельная модель?
- •Отражение света?
- •Закон Снеллиуса?
- •Диффузное преломление и отражение?
- •Распределение энергии при отражении?
- •Распределение энергии при преломлении?
- •Описание поверхности, состоящей из случайно ориентированных микрограней?
- •Преломление света поверхностью, состоящей из микрозеркал?
- •Моделирование общего случая освещенности?
- •Задача удаления невидимых линий и поверхностей?
- •Общие характеристики методов удаления невидимых линий и поверхностей?
- •Типы когерентности?
- •Линии горизонта?
- •Методы плавающего горизонта?
- •Сортировка граней по глубине?
- •Метод z-буфера?
- •Эвристические концепции невидимости?
- •Отличие и сходство видимости в сценах для выпуклых и невыпуклых фигур?
- •Постановка задачи удаления невидимых граней выпуклого многогранника?
- •Алгоритм удаления невидимых граней выпуклого многогранника?
- •Количественная невидимость?
- •Общие свойства функции количественной невидимости?
- •Свойство функции количественной невидимости в особых точках?
Векторная полигональная модель?
Для описания пространственных объектов здесь используются такие элемен ты: вершины; отрезки прямых (векторы); полилинии, полигоны; полигональные поверхности (рис. 9.2).
Элемент "вершина" (vertex) – главный элемент описания, все другие являются производными. При использовании трехмерной декартовой системы координаты вершин определяются как (xi, yi, zi). Каждый объект однозначно определяется координатами собственных вершин.
Рис. 9.2. Базовые элементы векторно-полигональной модели '
Вершина может моделировать отдельный точечный объект, размер которое не имеет значения, а также может использоваться в качестве конечных точек для линейных объектов и полигонов. Двумя вершинами задается вектор. Несколько векторов составляют полилинию. Полилиния может моделировать отдельный линейный объект, толщина которого не учитывается, а также может представлять контур полигона. Полигон моделирует площадный объект. Один полигон может описывать плоскую грань объемного объекта. Несколько граней составляют объемный объект в виде полигональной поверхности – многогранник или незамкнутую поверхность (в литературе часто употребляется название "полигональная сетка").
Векторную полигональную модель можно считать наиболее распространен ной в современных системах трехмерной КГ. Ее используют в системах автоматизированного проектирования, в компьютерных играх и тренажерах в САПР, геоинформационных системах и тому подобное.
Рассмотрим на примере куба структуры данных, которые используются в векторной полигональной модели. Описание такого объекта в структурах данных можно описать следующими способами.
Первый способ описания структур данных в векторной модели?
В первом способе при описании все грани куба сохраняются в отдельности (рис. 9.3).
Рис. 9.3. Первый способ описания куба
Тогда грань A - это кортеж из 4-х троек координат:
{ (xао, уао, zао), (xа1, уа1, zа1), (xа2, уа2, zа2), (xа3, уа3, zа3) }
Остальные грани определяются аналогично. Например, грань B задается как:
{ (xBо, уBо, zBо), (xB1, уB1, zB1), (xB2, уB2, zB2), (xB3, уB3, zB3) }
С
хематично
это видно на рис. 9.4.
Рис. 9.4. Отдельные грани
В компьютерной программе такой способ описания объекта можно реализовать разнообразно. Например, для каждой грани открыть в памяти отдельный массив. Можно все грани записывать в один массив-вектор. А можно использовать классы (языком C++) как для описания отдельных граней, так и объектов в целом. Можно создавать структуры, которые объединяют тройки (x, у, z), или сохранять координаты отдельно. В значительной мере это относится уже к компетенции программиста.
Если внимательно посмотреть на вышеприведенный способ описания, то можно отметить, что каждая из вершин (во всяком случае в кубе) описывается трижды – так как она принадлежит сразу трем смежным граням
Второй и третий способы описания структур данных в векторной модели?
В
торой
вариант описания не содержит повторов.
Вершины пронумерованы, например, как
на рис 9.5
Рис. 9.5. Куб с пронумерованными вершинами
А
каждая грань дается в виде списка
указателей на вершины (рис. 9.6)
Рис. 9.6. Индексы вершин в массивах граней.
Третий способ известен под названием линейно-узловой модели и основывается на иерархии: вершины – ребра – грани (рис. 9.7).
При построении подобных моделей большую роль играет скорость вывода полигонов. Если для того, чтобы изобразить полигоны нужно нарисовать линию контура и точки заполнения, то первый и второй варианты близки по скорости. Отличие лишь в том, что для второго варианта нужно сначала выбирать индекс вершины, что замедляет процесс вывода. Для третьего варианта можно предусмотреть такой способ рисования контура, чтобы каждая линия рисовалась только один раз (помечать уже нарисованную линию). Это обусловливает преимущество третьего варианта по быстродействию.
Представим теперь, что мы поменяли координаты одной вершины (рис 9.8.)
Что
произойдет в этом случае? Если использовался
второй или третий способы, где каждая
вершина присутствует в одном экземпляре,
изменение ее координат приведет
автоматически к изменению всех граней,
в описании которых п
рисутствует
индекс этой вершины.
Рис. 9.7. Линейно-узловая модель
Рис.9.8.Результат изменения координат одной вершины (по вариантам).
В первом же варианте картинка исказится, поскольку добавятся новые грани. Однако, когда нужно разъединить смежные грани, то для второго и третьего вариантов это сложнее, чем для первого – необходимо дополнить структуру данных новой вершиной, новыми ребрами и определить индексы в массивах граней.