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

fullKG

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

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 этап: Вывод на экран

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

Yв

Yн

Хл Хп

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

Хлевое

Хправое

Уверхнее

Унижнее

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