Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная графика.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.55 Mб
Скачать

50. Алгоритм Варнока

Вход: векторная модель (параметры сцены, расположение камеры).

Выход: растр.

Для каждой грани вычисляются экранные координаты её вершин. Рассматривается множество многоугольников и прямоугольное окно.

Если все многоугольники внешние, то закрашиваем окно цветом фона.

Если только один многоугольник пересекается с окном, то выполняется его отсечение (окном) и рисуется только видимая часть.

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

Если размер окна = 1 пиксель, то он закрашивается цветом ближайшего многоугольника и на этом работа алгоритма прекращается.

янезнаюкакэтонарисовать.jpg

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

Замечания

  • Глубина рекурсии оказывается небольшой (при размерах 1024х1024 глубина = 10)

  • Алгоритм может быть распараллелен.

51. Алгоритм Вейлера-Айзертона

На входе и на выходе векторная модель.

  1. Все полигоны сортируются по глубине и находится самый близкий к камере многоугольник.

  2. Все многоугольники отсекаются этим ближайшим многоугольником и формируются два списка: внутренний (то, что внутри отсекающего многоугольника) и внешний (то, что вне отсекающего многоугольника)

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

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

    • Если там есть хотя бы один многоугольник, который ближе отсекающего, то к нему рекурсивно применяется весь алгоритм.

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

52. Модели отражения света и их использование при закраске

1. Зеркальное отражение света: Is=Icospα

α — угол между лучом отражения и направлением камеры.

p — степень полировки поверхности.

I — яркость источника

2. Диффузное отражение — отражение от матовых поверхностей.

Луч отражается во всех направлениях одинаково, где расположена камера — неважно: Id=Icosθ

θ — угол между нормалью к поверхности и лучом из источника.

3. Фоновое освещение (попадает в камеру независимо ни от чего): Ia=const.

4. Сумма первых двух вариантов: I = KaIa + KsIs + KdId

Ka,s,d — коэффициенты, задающие свойства поверхности.

Ia,s,d — яркости разных освещений.

Если источников много, то

I = KaIa+Σ[F(R)(KsIs+KdId)]

где

R — расстояние,

F(R) ϵ [0,1] — функция ослабления.

Например, F(R) = 1 / (K1 + K2R + K3R2)

Если свет не монохромный, то все предыдущие действия производятся отдельно для каждого канала R,G,B. Если вектор С=(R,G,B), то

IC=I*Cисточника*Cточки объекта

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