Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ_Лек3.doc
Скачиваний:
8
Добавлен:
08.02.2015
Размер:
385.02 Кб
Скачать

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

Работает в пространстве изображения. Используется для удаления невидимых линий трехмерного представления функций. Описывает поверхность в виде: F(x,y,z)=0

Главная идея – сведение 3-х мерной задачи к 2-х мерной, путем пересечения поверхности с постоянными координатами (плоскость zi, постоянная координатная плоскостьx,y).

Затем все правые проецируются на плоскость z=0

z

yi

xi

z1

z2

z3

z4

z5

x

y

Frame58Frame59Frame60Frame61Frame62Frame63Frame64Frame65

Алгоритм состоит в следующем

Начиная с ближней плоскости y=1n,z=1n

Проверка:

Еслив точкеxiзначениеyiбольше значения всех предыдущихyij,

то точка видима;

Иначеточкаyijне видима;

Ощущения «всплывания» горизонта при движении от z=1 доzn(или понижение невидимых точек)

При этом возможна ситуация «обратной» выпуклости

Поэтому требуется модернизация алгоритма (для плоскостей z1доzn):

Если на текущей плоскости xi,yi>yijmax(пред.) илиyi<yijmin(пред.)

то точка видна

Иначе не видна

Однако и этот алгоритм не совсем эффективен. Предположим следующую ситуацию:

Координата вычисляется в точках ABCD. Разложение в растр делает разрывы, т.к. в т. А уже принято решение о невидимости до т. В., в то же время в т. С принято решение о видимости до т.D. Таким образом, необходимо искать точки пересечения.

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

Либо методом половинного сечения. Возможно также появление линий последних плоскостей, выходящих за границы xminиxmax, определяемые начальными плоскостями.

Это приводит к зазубренности линий ограничений.

Алгоритм Варнона

Работает в пространстве изображения.

Идея алгоритма: разбиение рабочей поверхности на ряд подэкранов.

Пример:

удаление

При разрешении 256 256 пикселов требуется не более 8 шагов разбиения, чтобы достичь пиксела. Пикселы анализируются для каждой фигуры, и выбирается цвет ближайшего.

Возможны две ситуации:

  1. разрешение по ребрам

  1. р

    1. принимается на границе

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

    азрешение по многоугольникам

1.принимается на границе

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

пиксел

Для алгоритма управления линий 8d– пусто, значит фон.

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

Если 8dсоответствует многоугольнику, то окрашивается в цвет ближайшего к наблюдателю многоугольника, перекрывающему этот пиксел.

Реализация алгоритма осуществляется с помощью построения деревьев:

0.0.256

0.0.128

1a

128.0.128

1b

0.128.128

1c

128.128.128

1d

0.0.64

2a

64.0.64

2b

0.64.64

2c

64.64.64

2d

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

Рассмотрим случай, когда в окне находится 1 многоугольник.

Алгоритм для каждого окна

Есливсе многоугольники являются внешними,

то окно пусто.

Есливнутри окна только один многоугольник,

то площадь окна вне многоугольника – фон,

а сами многоугольники – заданный цвет.

Еслитолько один многоугольник пересекает окно,

то окно – фон, часть многоугольника – цвет.

Еслиокно охвачено только одним многоугольником,

то все окно – цвет множества.

Еслиохватывающих многоугольников несколько,

то выбирается цвет ближайшего.

Иначе– разбиение окна.

Для выработки этих критериев используют так называемые z-оболочки, т.е. оболочка охватывающая многоугольники по егоminиmaxкоординатам.

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