Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики





НазваниеКафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики
страница3/6
Дата публикации15.12.2014
Размер0.71 Mb.
ТипИсследование
100-bal.ru > Информатика > Исследование
1   2   3   4   5   6

Удаление невидимых линий и поверхностей

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


    Рис. 8. Необходимость удаления невидимых линий

Необходимость удаления невидимых линий, ребер, поверхностей или объемов проиллюстрирована рис.8. На рис.8., а приведен типичный каркасный чертеж куба. Его можно интерпретировать двояко: как вид куба сверху, слева или снизу, справа. Удаление тех линий или поверхностей, которые невидимы с соответствующей точки зрения, позволяют избавиться от неоднозначности. Результаты показаны на рис.8. , b и c.

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

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

Объем вычислений для любого алгоритма, работающего в объектном пространстве, и сравнивающего каждый объект сцены со всеми остальными объектами этой сцены, растет теоретически как квадрат числа объектов ( n2 ). Аналогично, объем вычислений любо­го алгоритма, работающего в пространстве изображения и сравнивающего каждый объект сцены с позициями всех пикселов в систе­ме координат экрана, растет теоретически, как nN. Здесь n обозна­чает количество объектов (тел, плоскостей или ребер) в сцене, а N - число пикселов. Теоретически трудоемкость алгоритмов, работаюoих в объектном пространстве, меньше трудоемкости алгоритмов, работающих в пространстве изображения, при n < N, то теоретически большинство алгоритмов следует реализовывать в объектном пространстве. Однако на практике это не так. Дело в том, что алгоритмы, работающие в пространстве изображения, более эффективны потому, что для них легче воспользоваться преимуществом когерентности при растро­вой реализации.

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

    1. Алгоритм плавающего горизонта

Алгоритм плавающего горизонта [2] чаще всего используется для уда­ления невидимых линий трехмерного представления функций, опи­сывающих поверхность в виде

F ( x, у, z ) = 0

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

Существует много алгоритмов, использующих этот подход. Поскольку в приложениях в основном нас интересует описание поверхности, этот алгоритм обычно работает в про­странстве изображения. Главная идея данного метода заключается в сведении трехмерной задачи к двумерной путем пересечения ис­ходной поверхности последовательностью параллельных секущих плоскостей, имеющих постоянные значения координат x, y или z.

На рис. 9. приведен пример, где указанные параллельные плоскости определяются постоянными значениями z. Функция F ( x, у, z ) = 0 сводится к последовательности кривых, лежащих в каждой из этих параллельных плоскостей, например к последовательности

y = f ( x, z ) или y = g ( y, z )

где z постоянно на каждой из заданных параллельных плоскостей.

Итак, поверхность теперь складывается из последовательности

    1. Секущие плоскости с постоянной координатой

кривых, лежащих в каждой из этих плоскостей, как показано на рис. 10. Здесь предполагается, что полученные кривые являются однозначными функциями независимых переменных. Если спроецировать полученные кривые на плоскость z = 0, то сразу становится ясна идея алгоритма удаления невиди­мых участков исходной поверхности. Алгоритм сначала упорядочи­вает плоскости

    1. Кривые в секущих областях с постоянной координатой


z = const по возрастанию расстояния до них от точки наблюдения. Затем для каждой плоскости, начиная с ближайшей к точке наблюдения, строится кривая, лежащая на ней. Алгоритм удаления невидимой линии заключается в следующем:
Если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше значения y для всех предыдущих кривых при этом значении x, то текущая кри­вая видима в этой точке; в противном случае она невидима.
Реализация данного алгоритма достаточно проста. Для хранения максимальных значений y при каждом значении x используется массив, длина которого равна числу различимых точек (разрешению) по оси x в пространстве изображения. Значения, хранящиеся в этом массиве, представляют собой текущие значения «горизонта». Поэтому по мере рисования каждой очередной кривой этот горизонт «всплыва­ет». Фактически этот алгоритм удаления невидимых линий работает каждый раз с одной линией.

Алгоритм работает очень хорошо до тех пор, пока какая-нибудь очередная кривая не окажется ниже самой первой из кривых. Как показано на рис.11.,а. Подобные кривые, естественно, видимы и представляют собой нижнюю сторону исходной поверхности. Однако алгоритм будет считать их невидимыми. Нижняя сторона по­верхности делается видимой, если модифицировать этот алгоритм, включив в него нижний горизонт, который опускается вниз по ходу работы алгоритма. Это реализуется при помощи второго массива, длина которого равна числу различимых точек по оси x в про­странстве изображения. Этот массив содержит наименьшие значе­ния y для каждого значения x. Алгоритм теперь становится таким:

    1. Обработка нижней стороны поверхности

Если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше максимума или меньше минимума по y для всех предыдущих кривых при этом x, то текущая кривая видима. В противном случае она невидима.
Полученный результат показан на рис. 11., b.


    1. Линейная интерполяция между заданными точками

В изложенном алгоритме предполагается, что значение функции, т. е. y, известно для каждого значения x в пространстве изо­бражения. Однако если для каждого значения x нельзя указать (вычислить) соответствующее ему значение у, то невозможно поддерживать массивы верхнего и нижнего плавающих горизонтов. В таком случае используется линейная интерполяция значений у между известными значениями для того, чтобы заполнить массивы верхнего и нижнего плавающих горизонтов, как показано на рис. 12. Если видимость кривой меняется, то метод с такой простой интер­поляцией не даст корректного результата. Этот эффект проиллюст­рирован рис. 13.,а. Предполагая, что операция по заполнению мас­сивов проводится после проверки видимости, получаем, что при пе­реходе текущей кривой от видимого к невидимому состоянию (сег­мент АВ на рис. 13.,а), точка (xn+k, yn+k ) объявляется невидимой. Тогда участок кривой между точками (xn, yn) и (xn+k, yn+k ) не изо­бражается и операция по заполнению массивов не производится. Об­разуется зазор между текущей и предыдущей кривыми Если на участке текущей кривой происходит переход от невидимого состоя­ния к видимому (сегмент CD на рис. 13.,а), то точка (xm+k, ym+k ) объявляется видимой, а участок кривой между точками (xm, ym) и (xm+k, ym+k ) изображается и операция по заполнению массивов проводится. Поэтому изображается и невидимый кусок сегмента CD. Кроме того, массивы плавающих горизонтов не будут содер­жать точных значений у. А это может повлечь за собой дополни­тельные нежелательные эффекты для последующих кривы. Следо­вательно,


    1. Эффект пересекающихся кривых

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

Существует несколько методов получения точек пересечения кривых. На растровых дисплеях значение координаты x можно увеличивать на 1, начиная с xn или xm (рис. 13.,а). Значение у, соответствующее текущему значению координаты х в пространстве изо­бражения, получается путем добавления к значению у, соответству­ющему предыдущему значению координаты x, вертикального приращения y вдоль заданной кривой. Затем определяется видимость новой точки с координатами (x + 1, y + y ). Если эта точка видима, то активируется связанный с ней пиксел. Если невидима, то пиксел не активируется, а x увеличивается на 1. Этот процесс про­должается до тех пор, пока не встретится xn+k или xm+k. Пересече­ния для растровых дисплеев определяются изложенным методом с достаточной точностью. Близкий и даже более элегантный метод определения пересечений основан на двоичном поиске.

Точное значение точки пересечения двух прямолинейных отрезков, которые интерполируют текущую и предшествующую кривые, между точками (xn, yn) и (xn+k, yn+k ) (рис. 13.) задается формулами:



где


а индексы c и p соответствуют текущей и предшествую­щей кривым. Полученный результат показан на рис. 13.,b. Теперь алгоритм излагается более формально:
1. Если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше максимума или меньше минимума по y для всех предыдущих кривых при этом x, то текущая кривая видима. В противном случае она невидима.
2. Если на участке от предыдущего (xn) до текущего (xn+k) значения x видимость кривой изменяется, то вычисляется точка пересечения (xi).
3. Если на участке от xn до xn+k сегмент кривой полностью видим, то он изображается целиком; если он стал невидимым, то изображается фрагмент от xn до xi; если же он стал видимым, то изображается фрагмент от xi до xn+k.
4. Заполнить массивы верхнего и нижнего плавающих горизонтов.
Изложенный алгоритм приводит к некоторым дефектам, когда кривая, лежащая в одной из более удаленных от точки наблюдения плоскостей, появляется слева или справа из-под множества кривых, лежащих в плоскостях, которые ближе к указанной точке наблюдения. Этот эффект продемонстрирован на рис. 14., где уже обрабо­танные плоскости n - 1 и n расположены ближе к точке наблюде­ния. На рисунке показано, что получается при обработке плоскости n + 1. После обработки кривых n - 1 и n верхний горизонт для зна­чений x = 0 и 1 равен начальному значению у; для значений x от 2

    Рис. 14. Эффект зазубренного ребра

до 17 он равен ординатам кривой n; а для значений 18, 19, 20 - ор­динатам кривой n - 1. Нижний горизонт для значений x = 0 и 1 равен начальному значению у; для значений x = 2, 3, 4 – ординатам кривой n; а для значений x от 5 до 20 - ординатам кривой n - 1. При обработке текущей кривой (n + 1) алгоритм объявляет ее види­мой при x = 4. Это показано сплошной линией на рис. 14.. Анало­гичный эффект возникает и справа при x = 18. Такой эффект при­водит к появлению зазубренных боковых ребер. Проблема с зазу­бренностью боковых ребер решается включением в массивы верхне­го и нижнего горизонтов ординат, соответствующих штриховым линиям на рис. 14.. Это можно выполнить эффективно, создав ложные боковые ребра. Приведем алгоритм, реализующий эту идею для обеих ребер:
- Обработка левого бокового ребра:

Если Pn является первой точкой на первой кривой, то запомним Pn в качестве Pn1 и закончим заполнение. В противном случае создадим ребро, соединяющее Pn и Pn1.

Занесем в массивы верхнего и нижнего горизонтов ординаты этого ребра и запомним Pn в качестве Pn1.
- Обработка правого бокового ребра:

Если Pn является последней точкой на первой кривой, то запомним Pn в качестве Pn1 и закончим заполнение. В противном случае создадим ребро, соединяющее Pn и Pn1.

Занесем в массивы верхнего и нижнего горизонтов ординаты этого ребра и запомним Pn в качестве Pn1.
Теперь полный алгоритм выглядит так:
Для каждой плоскости z = const.

1. Обработать левое боковое ребро.

2. Для каждой точки, лежащей на кривой из текущей плоско­сти:

2.1. Если при некотором заданном значении x соответству­ющее значение у на кривой больше максимума или меньше минимума по у для всех предыдущих кривых при этом x, то кривая видима (в этой точке). В про­тивном случае она невидима.
2.2. Если на сегменте от предыдущего (xn) до текущего (xn+k) значения x видимость кривой изменяется, то вычисляется пересечение (xi).
2.3. Если на участке от xn до (xn+k) сегмент кривой полностью видим, то он изображается целиком; если он cтал невидимым, то изображается его кусок от xn до xi; если же он стал видимым, то изображается его ку­сок от xi до xn+k.
3. Заполнить массивы верхнего и нижнего плавающих горизонтов.

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


    Рис. 15. Функция y = (1/5) sin x cos z  (3/2) cos (7a/4) * exp (a), a = (x  )2 + (z  )2, изображённая в интервале (0, 2) с помощью алгоритма плавающего горизонта

На рис. 15. показан типичный результат работы алгоритма плавающего горизонта.


1   2   3   4   5   6

Похожие:

Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонтрольная работа №1 Тема контрольной работы №1 Базовые основы компьютерной
Области применения компьютерной графики; технические средства компьютерной графики: мониторы, графические адаптеры
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики icon«Юго-Западный государственный университет» (юзгу) Кафедра программного...
Цель работы: Исследование развития криптографии и способов применения шифров в деятельности человека
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconРазработка и исследование интегрированных алгоритмов размещения элементов...
Специальности: 05. 13. 12 – Системы автоматизации проектирования, 05. 13. 17 – Теоретические основы информатики
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconФакультет математики и информационных технологий Кафедра информатики и вычислительной техники
Познакомить учащихся с планетами Солнечной системы, сформировать представление о них и о том, отчего на Земле сменяются день, ночь,...
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconУчитель математики, информатики и вычислительной техники Образование высшее Стаж работы
Урок Правила техники безопасности. Повторение курса 8 класса (двоичная система)
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма дисциплины Современные проблемы информатики и вычислительной...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 09....
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconРабочая программа по дисциплине В. В основы компьютерной графики
Дисциплина «Основы компьютерной графики» является фундаментальной дисциплиной в подготовке бакалавра. Это одна из основных дисциплин...
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики icon«Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David...
После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconЗадача изучения дисциплины освоить основные понятия компьютерной...
Цель преподавания дисциплины – ознакомление студентов с основами компьютерной графики и графическими программами
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconЗадача изучения дисциплины освоить основные понятия компьютерной...
Цель преподавания дисциплины – ознакомление студентов с основами компьютерной графики и графическими программами
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconИнформатика и вычислительная техника
Аналитический обзор по курсу «Современные проблемы информатики и вычислительной техники»
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонтрольная работа выполняется в два этапа
Составитель: Е. В. Моисеенко, доцент кафедры информатики, инженерной и компьютерной графики вгуэс
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКонспект урока информатики и икт (с использованием технологии сдп...
Тема "Использование вспомогательных алгоритмов для рисования орнаментов в исполнителе Чертежник"
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма по формированию навыков безопасного поведения на дорогах...
После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconПрограмма по формированию навыков безопасного поведения на дорогах...
После защиты диссертации на тему «Наука компьютерной графики» Сазерленд и доктор Дэвид Эванс (David Evans) открывают в университете...
Кафедра информатики и вычислительной техники карпенко сергея михайловича исследование и разработка алгоритмов интерактивной компьютерной графики iconКурсовая работа по дисциплине «Информатика и программирование»
Кафедра «Программное обеспечение вычислительной техники и автоматизированных систем»


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск