Закрашивание методом Гуро | MetodPro.ru

Реклама на сайте

Закрашивание методом Гуро


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

Вектора нормалей определяются для всех вершин многоугольников аппроксимирующих поверхность. Для усреднения нормали к некоторой вершине суммируются нормали ко всем многоугольникам, пересекающимся в этой вершине. Полученный результат нормализуется. Например, для вершины, в которой пересекаются четыре многоугольника, нормаль может быть посчитана следующим образом .

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

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

Для проведения билинейной интерполяции рассчитывают интенсивности в вершинах многоугольника, а для определения интенсивностей всех других точек проводят интерполяцию с помощью сканирующей строки. Рассмотрим участок полигональной поверхности, приведенный на рисунке. Интенсивность в точке P определяется линейной интерполяцией интенсивностей рассчитанных для точек Q и R. Линейная интерполяция производится на основе параметрического уравнения прямой, проходящей через две точки

P = P1t+(1-t)P2 . Очевидно, что при t=0 получаем точку P1, а при t=1 точку P2.

Аналогично интенсивность в точке P определиться как

IP = tIq+(1-t)Ir где 0 £ t £1 t= QP/QR.

Для получение интенсивности в точке Q интерполируем интенсивности в точках А и В.

Iq = uIa+(1-u)Ib где 0 £ u £ 1 u= AQ/AB.

Из этих же рассуждений находим интенсивность в точке R.

Ir = wIb+(1-w)Ic где 0 £ w £ 1 w= BR/BC.

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

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

IP1 = t1Iq+(1-t1)Ir,

IP2 = t2Iq+(1-t2)Ir

Найдем разность интенсивностей и выразим интенсивность во второй точке через интенсивность в первой точке:

IP2 = IP1+( Iq-Ir)(t2-t1)= Ip1+dIdt.

Другими словами, при постоянном шаге по параметру приращение интенсивности постоянно.

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

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

 

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



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем