Шаг 69.
Основы компьютерной графики. Методы и алгоритмы трехмерной графики. Закрашивание поверхностей. Вычисление координат вектора нормали

    На этом шаге мы рассмотрим алгоритм выполнения этой операции.

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

  x=x(s, t),
  y=y(s, t),
  z=z(s, t),
то координаты вектора нормали можно вычислить так:

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

    Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим одну ее плоскую грань в виде треугольника (рисунок 1).


Рис.1. Одна грань поверхности

    Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, лежащих в плоскости грани. В качестве таких векторов могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены только для радиус-векторов.

    Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси параллельны осям прежней системы.

    Координаты вершин в новой системе:

    Теперь назовем ребро (1-2) вектором А, а ребро (1-3) - вектором В, как показано на рисунке 2.


Рис.4. Радиус-векторы

    Таким образом, положение нормали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (x', y', z') выразим формулами для векторного произведения:

    Здесь использованы координаты вершин грани до переноса.

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

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

    На следующем шаге мы закончим рассматривать диффузное отражение.




Предыдущий шаг Содержание Следующий шаг