Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка по ИГС лаба№1.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
324.41 Кб
Скачать
  1. Вычисление нормали поверхности в данной точке

Нормаль поверхности в точке – это прямая, ортогональная касательной плоскости, проведенной в этой точке поверхности. Уравнения нормали поверхности в точке с криволинейными координатами (u0, v0) и декартовыми координатами (x0, y0, z0) при параметрическом задании могут быть вычислены по формулам:

Откуда находим X, Y, Z.

  1. Определение косинуса угла между направлением нормали и направлением на источник света (наблюдателя)

В общем случае косинус угла между произвольными векторами и находится по формуле:

В рассматриваемой задаче точка наблюдения фиксирована и имеет координаты (0, 0, 1, 0). Поэтому последняя формула для вектора нормали и наблюдателя примет вид:

Определение косинуса угла между нормалью и векторов источника света

Как и в предыдущем случае (так как вектор источника света S совпадает с вектором наблюдателя l),

Если косинус положительный, то это внешняя сторона, иначе внутренняя.

  1. Определение цвета точки

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

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

Здесь – интенсивность источника света (в данной работе она будет постоянной и равна единице), – угол между направлением света и нормалью к точке.

Пусть R, G и B – соответственно, красная, зеленая и синяя составляющие цвета точки. Тогда, зная интенсивность отраженного света в точке, получим RGB-коэффициенты отраженного цвета будут следующими:

;

;

;

где (R, G, B ) цвет внешней стороны точки, если cos ≥0 , иначе - внутренней.

Поскольку наиболее удобным и лучшим способом программного представления поверхности является приближенное описание (см. пункт моделирование поверхности), Т.е. поверхность представляется в виде сегментов, то оперировать будем ими.

x

z

источник света и наблюдатель (0, 0, 1, 0)

Таким образом, для определения цвета сегмента нам необходимо:

  1. Определение нормали сегмента

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

Определение косинуса угла между нормалью и векторов источника света

  1. Определение цвета сегмента.

Обобщенный алгоритм определения цвета сегмента:

{

Вычислить нормаль сегмента

Определение косинуса угла между направлением нормали и направлением на источник света (наблюдателя)

Определение цвета сегмента

}

Определение косинуса сегмента аналогично точке, что мы рассмотрели выше. Поэтому рассмотрим, как вычислить нормаль сегмента и цвет.