Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по КГ.doc
Скачиваний:
5
Добавлен:
27.04.2019
Размер:
1.17 Mб
Скачать

Алгоритм Кируса-Бека

R -выпуклая отсекающая область

Внутренняя нормаль n в произвольной точке а, лежащей на границе R, удовлетворяет условию:

n · (b - а) >= 0, где b - любая другая точка на границе R

скалярное произведение двух векторов V1 и V2 : V1V2 = |V1||V2| · cos θ, 

где θ - это меньший из двух углов, образованных V1 и V2.

если θ = π/2, то cos θ = 0 и V1 · V2 = 0.

nн - внешняя (наружная) и nв -внутренняя нормали к границе окна, исходящие из точки а, лежащей на этой границе.

Угол между nв и любым из таких векторов всегда принадлежит интервалу -π/2 <= θ <= π/2, положительно скалярное произведение этих векторов

угол между внешней нормалью и любым из подобных векторов равен

π - θ, a cos (π - θ) = - cosθ при этом отрицателен.

возьмем параметрическое представление отрезка Р1Р2:

P(t) = Р1 + (Р2 - Р1)t,     0 ≤ t ≤ 1.

Пусть f - граничная точка выпуклой области R,

n - внутренняя нормаль к одной из ограничивающих эту область плоскостей.

Тогда для любой конкретной величины t, т. е. для любой точки отрезка Р1Р2:

n · [P(t) - f] < 0: вектор P(t) - f направлен вовне области R.

n · [P(t) - f] = 0: P(t) - f принадлежит плоскости, которая проходит через f и перпендикулярна нормали.

n · [P(t) - f] > 0 : вектор P(t) - f направлен внутрь R

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

Если эти две точки не принадлежат одной граничной плоскости или ребру, уравнение n · [Р(t) - f] = 0 имеет только одно решение.

Если точка f лежит на той граничной плоскости или на том ребре, для которых n является внутренней нормалью, то точка на отрезке Р(t), которая удовлетворяет последнему уравнению, будет точкой пересечения этого отрезка с указанной граничной плоскостью.

Зеркальное отражение. Закраска методом Гуро.

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

В методе закраски с интерполяцией интенсивности (метод Гуро) нормали в вершинах многоугольников вычисляются как результат усреднения нормалей ко всем граням, которым принадлежит данная вершина. Используя значения нормалей, вычисляют интенсивности в вершинах по той или иной модели освещения. Эти значения затем используются для билинейной интерполяции: для данной строки сканирования вначале находят значения интенсивностей на ребрах, а затем линейно интерполируют между ними при закраске вдоль строки.

Недостатки метода Гуро:

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

возникает классический оптический эффект (Mach banding): на границах четырехугольников человеческий глаз усиливает переходы и границы.