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

  1. Метод Ньюэла

  2. Через векторное произведение

  1. Метод Ньюэла

(вычисление коэффициентов (a, b, c , d) плоскости, заданной n вершинами, в общем случае, не лежащих на одной плоскости) . Если плоскость представляется в виде уравнения Ax + By + Cz + D = 0, то согласно этому методу:

Где если i=n, то j=1, иначе j=i+1, а вычисляется с помощью любой точки на плоскости D = – ( Axi+ Byi+ Czi).

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

  1. Через векторное произведение сторон треугольника

Пусть у нас есть координаты 2-ух векторов, каждый из которых представляет сторону треугольника(зная вершины треугольника можно найти вектора его образующие, вычитая из координат конца координаты начала). Вектор A имеет координаты (ax, ay, az). Вектор B координаты(bx,by,bz).

Тогда координаты вектора нормали находятся из векторного произведения с помощью определителя:

=

Таким образом координаты вектора нормали:

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

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

Обобщенный алгоритм:

{

для каждого имеющегося полигона

вычислить нормаль

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

если косинус положительный,

то сегмент является внешним

иначе

внутренним

вычислить интенсивность цвета точки

присвоить цвет точки сегменту

}

  1. Проецирование

Данный этап уже рассматривался ранее в лабораторной работе №2 по Компьютерной графике, и в данной работе он выполняется абсолютно аналогично.

  1. Визуализация

В данной работе нужно будет осуществлять 2 вида визуализации изображения: визуализация каркаса и визуализация с flat-закраской.

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

При визуализации с применением flat-сглаживания необходимо закрашивать каждый сегмент поверхности соответствующим ему цветом.

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