Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

fullKG

.pdf
Скачиваний:
122
Добавлен:
12.02.2018
Размер:
736.4 Кб
Скачать

18. Описание криволинейных поверхностей. Линейчатые поверхности.

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

Х

Q (u, w) f (Pi (u, w))

1.Би-линейные поверхности, их задают на определенном участке

У нее есть 4 угловые точки поверхности

Р00

Р01 w

Р11 (x11; y11; z11)

0

u 1

0

w 1

Р10

u

Q (u, w) P

(1 u)(1 w) P

(1 u)w P u(1 w) P uw

00

01

10

11

Если u=0; w=0, то попадаем в точку P00 Q (u, w)

Если u=1; w=0, то попадаем в точку P Q (u, w)

10

Если u=1; w=1, то попадаем в точку P Q (u, w)

11

19. Поверхность Безье. Понятие характеристического многогранника.

Для кубического сплайна – две точки ограничения на производную. Для Безье - четыре точки, либо больше.

B – сплайн: не больше 4-5 точек обычно.

Задаем переход от одного к другому петчу. кубически – билинейно поверхность.

Для поверхности Безье: для построения сетки ее строим из кривых Безье, т.е формально задать петч, таким образом чтобы можно было определить i-тую и j-тую кривую для этого должны задать многогранник из вершин точек.

мин 4*4 вершины характеристического многогранника, т.е. 16 точек

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

Для поверхности B - сплайновой точки самые минимальные: 16 точек 4*3, может быть 4*5, 4*6 – чем больше точек тем труднее рассчитывать.

20. В-сплайновые поверхности. Для В-сплайновой поверхности, как и для поверхности Безье строятся петчи

Для поверхности B - сплайновой точки самые минимальные: 16 точек 4*3, может быть 4*5, 4*6 – чем больше точек тем труднее рассчитывать.

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

Трехмерные отсекатели:

-кубоид

-пирамида усеченная

Когда наблюдатель приближен, то в качестве отсекателя – усеченная пирамида

y

Когда далеко – кубоид

x

z

Н - наблюдатель

Формально рассматривается, какие отрезки попадают в отсекатель (трехмерные)

Распространяем алгоритм, использующий битовый код отрезка

Трехмерные объекты: ЛПНВБД – это 6-и битовый код

Л-левее П-правее Н-ниже В-выше Б-ближе Д-дальше

Если конец и начало тождественно = 0, то такой отрезок полностью виден.

Н 0 0 0 0 0 0 К 0 0 0 0 0 0

Если побитовое произведение ≠ 0, то такой отрезок полностью невиден

* ≠ 0

Если побитовое произведение = 0, то такой отрезок может быть частично виден или невиден

* = 0

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

Алгоритм отсечения видимости

Они позволяют выявить то, что видно, а что не видно, т.е. какие объекты в сложной сцены видны, а какие затеняются.

Это важно:

-при сложных сценах какие видны ребра в выпуклом объекте

-при произвольной форме

-при окраске

Базовые алгоритмы: (формально их можно комбинировать) Все они делятся на 2 группы:

1)Решают задачу видимости в пространстве объектов, т.е. как расположены объекты друг относительно друга в пространстве

2)Рассматривают в плоскости визуализации (что видно, а что не видно)

Как правило 1-я труппа используется:

когда объектов не очень много, т.к. это можно сделать быстро (сопоставить объекты)

2-я группа – когда сложная сцена, время обработки пропорционально количеству пикселов участвующих в представлении объекта на экране

Рассмотрим алгоритмы определения видимости выпуклого тела:

Если грань видна – то и все ребра видны Если грань не видна – то и все ребра не видны

Если найти внутреннюю точку выпуклого тела «0» и соединить ее с наблюдателем прямой линией, то можно четко сказать, что если плоскость совпадает с гранью выпуклого тела, пересекает эту линию на участке от 0 до Н то такая грань видна

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

Исходные: Уравнение плоскости и точки

доп. буфер: для каждого пикселя фиксируется значение z координаты для рассматриваемого мн-ка

с учетом уравнения плоскости:

A xi Byi

 

для каждой точки определяется:

zi

xi yi const

 

при этом предварительно в z-буфер заносится

Cz

D 0

i

i

значение «0» (

z

б

i

 

= 0)

Далее берется многоугольник и для каждой точки многоугольника определяется:

 

 

A

x

 

B

y

D

 

z

i

 

i

i

 

i

 

C

 

i

 

C

 

i

C

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

i

 

 

i

Далее

zi сравнивается с

zб

 

Если

zi

zб

 

, то

zбi

zi и этому пикселю присваивается цвет соответствующий

этому многоугольнику

 

 

Если

zi

zб

– не меняем значение

И так в цикле просматриваем все точки всех многоугольников.

При переходе от одной точки к другой выдерживают yi = const и тогда получаем

z меняется на постоянную величину Ai

Ci

zi

 

xi 1, y = zi

 

xi 1, y

-

Ai

 

 

 

 

Ci

 

 

 

 

 

 

Используется, когда очень много объектов.

24. Алгоритм выявления видимости сложной сцены путем построчного сканирования изображения.

В основе этого алгоритма лежит алгоритм разложения многоугольника в растр:

Этапы:

1.При определенных значениях Yi определяем количество точек пересечение с элементами многоугольника.

2.Сортировка точек в порядке возрастания или убывания по координате х.

3.Закраска вдоль этой линии по первой точке включается луч, по второй точке выключается и так далее. Изначально он включен.

Таким образом осуществляется построчная закраска этого многоугольника.

На первом этапе создается таблица ребер ТР куда заносятся все негоризонтальные ребра, т.е. следующая информация:

ymin ; xmin ; ymax ; tg x ,где

y

tg

- угол наклона ребра к оси абсцисс (y).

и есть ссылка к какому многоугольнику эти ребра относятся (т.е. указатель отношения к многоугольнику).

ax+by+cz+d=0 – уравнение плоскости.

25. Алгоритм выявления видимости сложной сцены, использующий принцип деления окна (алгоритм Варнока). Общая структура алгоритма.

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

Окно экрана:

Разбить это окно на 4 окна и для каждого окна решить видно что-нибудь или не видно и так далее разбивать.

Т.е. если в окне одна простая фигура, то ее отображаем и дальше это окно уже не надо делить.

1024

1024

Было 1024.

Разделив 10 раз, получим окно 1х1 пикселей.

Дальше делать просто, а если не можем решить, то в нем сложная фигурка и его надо подсветить нужным цветом (т.е. тем, у кого больше координата Z).

Параметры окна заносятся в стек (и так для каждого окна) если неизвестно что в окне, иначе отображается.

И так обрабатывается пока в стек не останется ни одного окна.

26. Совокупность тестов, обеспечивающих выявление взаимного

расположения окна и многоугольника.

 

 

(1)

(2)

(3)

(4)

(5)

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

P

0000

 

 

1

 

 

 

P

0000

 

 

 

2

 

0

P

0000

 

 

 

3

 

 

............

 

 

 

 

то это вариант (2)

Если одна Pi точка = 0000, а остальные Рj ≠ 0000 то это вариант (1)

Проверка отношения точек окна к точкам

P P

 

i

j

w

 

 

k

f

ij

k

 

 

 

Если

 

x

k

x

y

k

 

 

i

 

x

 

x

y

 

 

j

j

 

 

i

 

fij

 

fij

k k

 

 

k 1

yi yi

0

>0 или <0

следовательно это (5) или (4) вариант

цикл к=1..к

Если fij k 1 fij k k

0 следовательно это вариант (3)

цикл к=1..к

Для определения (5) или (4) вариант используют лучевой тест.

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

Если нечетное: n=2m+1 следовательно вариант (4) Если четное: n=2m следовательно вариант (5)

27. Алгоритмы определения видимости отрезка в прямоугольном окне (обычный, использующий границы окна, и с использованием 4-х разрядного битового кода).

Отсечение необходимо, чтобы из обширной базы данных выделить отдельные элементы для вывода на дисплей или принтер.

Есть 2-х, 3-х мерные операции отсечения.

2-х мерное отсечение – операции отсечения над отрезками.

Есть окно и множество отрезков, для которых нужно определить какая часть отрезка попадает в окно:

-виден полностью

-виден частично

-не виден полностью

 

D к

н

к

к В(хВ,yВ)

 

4

 

 

5

 

к

 

 

 

 

 

С

к

 

н 2

3

 

 

 

 

н А(хА,yА)

1

н

1 этап: Выявление полностью видимых отрезков или тривиально невидимых в окне Например:

АВ – невиден (расположен по одну сторону окна) СД – это не тривиальная невидимость.

2 этап: У оставшихся надо находить точки пересечения с границами окна, и определять видимую часть.

3 этап: Вывод на экран

Простейший алгоритм

Хл Хп

Вначале известны размеры окна (параметры окна):

Хлевое

Хправое

Уверхнее

Унижнее

Соседние файлы в предмете Компьютерная Графика