русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм определения видимости ребер произвольного многогранника.


Дата добавления: 2013-12-23; просмотров: 3542; Нарушение авторских прав


Алгоритм Аппеля.

Определение нелицевых граней.

Рассмотрим многогранник и решим задачу видимости аналогично задаче освещенности, рассмотренной ранее.

Если вектор нормали какой-то грани Ни составляет с Л, задающим направление проецирования тупой угол, то эта грань видна и называется лицевой.

При параллельном проецировании скалярное произведение (n,l)<=0

В случае когда угол - острый, грань не видна и не лицевая.

При центральном проецировании с центром в C вектор проецирования для точки P l = c-p (разность векторов)

Знак скалярного произведения не зависит от точки п а определяется в каком полупространстве относительно плоскости с данной гранью лежит центр проецирования.

Для выпуклого многогранника удаление невидимых граней решает задачу невидимых рёбер.

 



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

 



Удаление невидимых рёбер.

1. Алгоритм Робертса предназначен для фигур, у которых каждая грань - выпуклый многоугольник

1) отбрасываются все рёбра обе образующие грани которых - нелицевые.

2) Проверяется каждое из оставшихся рёбер со всеми гранями многогранника на закрывание. Возможны 3 случая.

А - грань не закрывает ребро

Б - грань полностью закрывает ребро – ребро удалено из списка видимых

В - частично, разбиение на части видимые части ставятся на место прежнего ребра.

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

 



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

Каждая точка видима только тогда, когда её количественная невидимость =0.

Контурная линия многогранника - есть ломаная из рёбер, для которых одна грань - лицевая, а другая - нелицевая.

Например: ABCC'D'DEE'A'A

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

 



А) Строится контурная линия

Б) Берётся вершина и определяется её количественная невидимость

В) Просматривается изменение количественной невидимости вдоль каждого из рёбер выходящего из этой точки. Рёбра проверяются на прохождение контурной линии и в соответствующих точках количественная невидимость изменяется. Те рёбра у которых кн=0 изображаются.

Г) Выполняется переход к следующей вершине и возврат к Б

Д) если ребро выходит из вершины, принадлежащей контурной линии, проверяется, не закрывается ли это ребро одной из граней (Дд")

Так как у реальных многогранников количество ребер в контурной линии намного меньше общего числа ребер то алгоритм Аппеля более эффективен, чем алгоритм Робертса.



<== предыдущая лекция | следующая лекция ==>
Закраска области заданной цветом границы | Лекция 30.11.2008


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.