Смекни!
smekni.com

Методические указания по выполнению курсовой работы по дисциплине «машинная графика» Москва 1995 (стр. 4 из 9)

-21 -

12.Роджерс Д., Адаме Дж. Математические основы машинной графики.

-М.:Мир, 1980.-240с. 13.Роджерс Д. Алгоритмические основы машинной графики.-М.:Мир,

1989.-512с. И.Уокер Б.С., Гурд Дж., Дроник Е.А. Интерактивная машинная

графика.-М. :Машиностроение, 1980.-168с. 15.Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики.

-М.:Мир,1985.-Т.1:375 с.,Т.2:368 с. 16.Фролов А.Г., Фролов Г.В. Программирование видеоадаптеров

CGA, EGA и VGA. - М.: Диалог - МИФИ, 1992.-28S с.

17. Хирн Д., Бейкер М. Микрокомпьютерная графика.-М.:Мир, 1987.
-352с.

18. ШикинЕ.В., Боресков А.В., Зайцев А.А. Начала компьютерной
графики.-М.: Диалог-МИФИ, 1993.-138 с.

19. Эгрон Ж. Синтез изображений. Базовые алгоритмы.-М.:Радио и
связь, 1993.-216с.

20. Эйнджел И. Практическое введение в машинную графи-
ку.-М.:Радио и связь, 1984.-135 с.

21. Эндерле Г., Кэнси К., Пфафф Г. Программные средства машинной
графики. Международный стандарт GKS. - М.:Радио и связь,

1988.-479 с.

6. АЛГОРИТМЫ МАШИННОЙ ГРАФИКИ, ИСПОЛЬЗУЕМЫЕ ПРИ ВЫПОЛНЕНИИ

КУРСОВОЙ РАБОТЫ

Алгоритмы машинной графики можно разделить на два уровня: нижний и верхний. Группа алгоритмов нижнего уровня иредназначе-

-22-

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

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

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

К третьей группе следует отнести алгоритмы, которые могут быть без больших затруднений реализованы аппаратно (допускающие распараллеливание, рекурсивные, реализуемые в простейших коман­дах). В эту группу могут попасть и алгоритмы, представленные в первых двух группах.

Наконец, к четвертой группе можно отнести алгоритмы со специальными эффектами, например, с устранением лестничного эф­фекта.

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

-23-

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

Однако при этом не следует забывать, что вывод объектов обеспечивается примитивами, реализующими алгоритмы нижнего уровня, поэтому нельзя игнорировать проблему выбора и разработ­ки эффективных алгоритмов нижнего уровня.

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

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

К задаче удаления невидимых линий и поверхностей примыкает задача построения реалистических изображений, т.е. учета явле­ний, связанных с количеством и характером источников света, учета свойств поверхности тела (прозрачность, преломление, от­ражение света).

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

Сложность задачи удаления невидимых линий и поверхностей привела к появлению большого числа различных способов ее реше-

-24-

ния, различных алгоритмов, но наилучшего решения поставленной задачи не существует. Главным недостатком всех алгоритмов явля­ется значительный объем вычислений, необходимых для определения удаляемых линий и поверхностей.

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

Алгоритмы удаления невидимых линий и поверхностей классифи­цируются по способу выбора систем координат или пространства, в котором они работают. Первый класс - это алгоритмы, работающие в объектном пространстве, имеющие дело с физической системой коор­динат (мировые координаты), в которой они описаны. Второй класс алгоритмов работает в пространстве изображения и имеет дело с системой координат того устройства, на котором эти объекты синте­зируются. Алгоритмы первого класса используются в тех случаях, когда требуется высокая точность изображения объектов. Синтезиру­емые в этом случае изображения можно свободно увеличивать (умень­шать) во много раз, сдвигать или поворачивать. Точность вычисле­ний алгоритмов второго класса ограничивается разрешающей способ­ностью экрана. Результаты, полученные в пространстве изображения, а затем увеличенные (уменьшенные) во много раз, не будут соот­ветствовать исходной сцене.

Различны и объемы вычислений для различного рода алгорит­мов. Так объем вычислений для алгоритмов, работающих в объектом

-25-

пространстве, и сравнивающих каждый объект сцены со всеми ос­тальными объектами этой сцены, растет теоретически как квадрат числа объектов. Аналогично, объем вычислений алгоритмов, рабо­тающих в пространстве изображений и сравнивающих каждый объект с позициями пикселов в экранной системе координат, растет тео­ретически, как произведение числа объектов на число пикселов экрана.

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

6.1. АЛГОРИТМ РОБЕРТСА

Алгоритм Робертса представляет собой первый из известных алгоритмов удаления невидимых линий. Этот математически эле­гантный метод работает в объектном пространстве. Модификации алгоритма, использующие предварительную пространственную сорти­ровку вдоль оси z и простые габаритные или минимаксные тесты, позволяют добиться почти линейной зависимости роста объема вы­числений от роста числа объектов.

Роберте решил проблему удаления невидимых линий для объек­тов, составленных из 1 Овьшуклых многогранников. Любой замкнутый объект с плоскими гранями можно представить в виде набора вы­пуклых многогранников ( рис. ), то есть в виде наборов плоскос­тей, образующих грани данных многогранников. Поскольку объем вычислений в алгоритмах удаления невидимых линий и поверхностей

-26-

растет с увеличением числа многоугольников, для описания по­верхностей объектов желательно использовать многоугольники с более чем тремя сторонами.

Таким образом, для реализации алгоритма необходимо вначале
представить объекты визуализации в виде наборов многогранников,
каждый из которых задан уравнениями плоскостей своих граней.
Каждая плоскость многогранника описывается уравнением:
aX + bY + cZ+d = 0, (6.1)

где X,Y и Z - мировые координаты.

В матричной форме это уравнение запишется в виде: [XYZ1][P] = 0,где

р 2= о

L -

Любой выпуклый объект можно описать матрицей объекта, сос­тоящей из коэффицентов уравнений плоскостей:

|al

a2 ...

an
= i ь Л Ь2 ... bnj,
|cl

c2 ...

cn|
|dl

d2 ...

, dn|
L-

где каждый столбец содержит коэффициенты одной плоскости.

Известно, что любая точка на плоскости однозначно определя-

ется двумя координатами; точка в пространстве в однородных коор-

динатах описывается вектором [S] = [X Y Z 1]. Известно также, ес­ли точка лежит на плоскости, то скалярное произведение [S][P] равно 0; если же точка не лежит на плоскости, то знак этого ска­лярного произведения показывает, по какую сторону от плоскости расположена точка. В алгоритме Робертса предполагается, что точ­ки, лежащие внутри тела дают положительное скалярное произведе­ние.

Сформировать матрицу объекта, состоящую из коэффициентов уравнений плоскостей можно несколькими методами. Один из них ис­пользует общеизвестный из аналитической геометрии принцип, что плоскость можно определить по трем неколлинеарным точкам ( хотя уравнение плоскости содержит четыре неизвестных коэффициента, его можно нормировать так, чтобы d = 1 ). Другой метод используется, если известен вектор нормали к плоскости , то есть :

2п 0 = a 2i + b Oj 2 + 0 с 2k 0 ,

где 2 i,j,k 0 - единичные векторы осей X, Y, Z соответственно. Урав­нение плоскости описывается формулой (6.1). Коэффицеш^ вычисля­ется с помощью произвольной точки на плоскости. Например, если эта точка с координатами (xl, yl, zl), то d = - (axl + byl + czl).

Метод, предложенный Мартином Ньюэлом, позволяет найти как точное решение для уравнений плоскостей многоугольников, так и «наилучшее» приближение для неплоских многоугольников. Этот метод эквивалентен определению нормали в каждой вершине многоугольника с помощью векторного произведения прилежащих ребер и усреднения результатов. Коэффициенты плоскости вычисляются из следующей стстемы уравнений: