Методическое пособие по курсу "Интерактивные графические системы". Найханов В.В - 46 стр.

UptoLike

Чтобы получить цветное изображение, необходимо найти функции закраски для
каждого из трех основных цветов - красного, зеленого и синего. Поскольку цвет
зеркально отраженного света определяется цветом падающего, то постоянная
k
s
считается одинаковой для каждого их этих цветов.
В случае, когда точечных источников света несколько, то значение
интенсивности отраженного света в некоторой точке определяется как
сумма значений интенсивности отраженного света от каждого источника
света. Если освещаемая поверхность в рассматриваемой точке гладкая
(имеет касательную плоскость), то вектор внешней нормали вычисляется
непосредственно. Пусть закрашиваемая поверхность задана неявном виде
F(x,y,z)=0. Если дана
явная функция, то эту функцию всегда можно
представить в неявном виде путем переноса в левую часть уравнения
определяемое значение. Для определения вектора нормали
n(n
x
,n
y
,n
z
) в
некоторой точке
N(x
N
,y
N
,z
N
) необходимо определить частные производные
F
x
, F
y
, F
z
, по переменным x,y,z и в полученные уравнения подставить
координаты точки, для которой определяется нормаль.
)z,y,x(Fn)z,y,x(Fn)z,y,x(Fn
x
)z,y,x(F
)z,y,x(F,
x
)z,y,x(F
)z,y,x(F,
x
)z,y,x(F
)z,y,x(F
NNNZZNNNYYNNNXX
zyx
===
=
=
=
В случае многогранной поверхности векторы внешних нормалей
можно найти только для ее граней. Что касается направлений векторов
внешних нормалей на ребрах и в вершинах этой поверхности, то их
значения можно найти только приближенно.
Пусть, например, грани, сходящиеся в данной вершине, лежат в
плоскостях, описываемых уравнениями
A
i
x + B
i
y + C
i
z + D
i
= 0, i = 1,...,m.
Можно считать, что нормальные векторы этих плоскостей
(A
i
, B
i
, C
i
), i = 1,...,m,
являются векторами внешних нормалей для рассматриваемой многогранной
поверхности (если какой-то из нормальных векторов не является внешним,
то достаточно поменять знаки его координат на противоположные).
Складывая эти векторы, получаем вектор, определяющий направление
приближенной нормали
(А, В, С) =
i
m
=
1
(A
i
, B
i
, C
i
).
Замечание
Для определения направления приближенной нормали в точке, лежащей на ребре
многогранной поверхности, достаточно сложить векторы внешних нормалей,
примыкающих к этому ребру граней рассматриваемой поверхности. Можно
поступить и по-иному. А именно, аппроксимировать переменный вектор нормали
вдоль ребра многогранной поверхности при помощи уже найденных векторов
внешних нормалей в вершинах, прилегающих к рассматриваемому
ребру.
      Чтобы получить цветное изображение, необходимо найти функции закраски для
      каждого из трех основных цветов - красного, зеленого и синего. Поскольку цвет
      зеркально отраженного света определяется цветом падающего, то постоянная
      ks считается одинаковой для каждого их этих цветов.

      В случае, когда точечных источников света несколько, то значение
интенсивности отраженного света в некоторой точке определяется как
сумма значений интенсивности отраженного света от каждого источника
света. Если освещаемая поверхность в рассматриваемой точке гладкая
(имеет касательную плоскость), то вектор внешней нормали вычисляется
непосредственно. Пусть закрашиваемая поверхность задана неявном виде
F(x,y,z)=0. Если дана явная функция, то эту функцию всегда можно
представить в неявном виде путем переноса в левую часть уравнения
определяемое значение. Для определения вектора нормали n(nx,ny,nz) в
некоторой точке N(xN,yN,zN) необходимо определить частные производные
Fx, Fy, Fz, по переменным x,y,z и в полученные уравнения подставить
координаты точки, для которой определяется нормаль.

                     ∂F( x , y, z)                    ∂F( x , y, z)                     ∂F( x , y, z)
      Fx ( x , y, z) =             , Fy ( x , y, z) =               , Fz ( x , y, z) =
                           ∂x                               ∂x                               ∂x
      n X = FX ( x N , y N , z N ) n Y = FY ( x N , y N , z N ) n Z = FZ ( x N , y N , z N )

     В случае многогранной поверхности векторы внешних нормалей
можно найти только для ее граней. Что касается направлений векторов
внешних нормалей на ребрах и в вершинах этой поверхности, то их
значения можно найти только приближенно.
     Пусть, например, грани, сходящиеся в данной вершине, лежат в
плоскостях, описываемых уравнениями
                     Ai x + Bi y + Ci z + Di = 0, i = 1,...,m.
     Можно считать, что нормальные векторы этих плоскостей
                               (Ai, Bi, Ci), i = 1,...,m,
являются векторами внешних нормалей для рассматриваемой многогранной
поверхности (если какой-то из нормальных векторов не является внешним,
то достаточно поменять знаки его координат на противоположные).
Складывая эти векторы, получаем вектор, определяющий направление
приближенной нормали
                                                m
                                (А, В, С) = ∑ (Ai, Bi, Ci).
                                               i =1



Замечание
      Для определения направления приближенной нормали в точке, лежащей на ребре
      многогранной поверхности, достаточно сложить векторы внешних нормалей,
      примыкающих к этому ребру граней рассматриваемой поверхности. Можно
      поступить и по-иному. А именно, аппроксимировать переменный вектор нормали
      вдоль ребра многогранной поверхности при помощи уже найденных векторов
      внешних нормалей в вершинах, прилегающих к рассматриваемому ребру.