Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп графика Лекция.doc
Скачиваний:
26
Добавлен:
12.05.2015
Размер:
495.62 Кб
Скачать

(Алгоритм отсечение нелицевых граней)

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

Рассмотрим выпуклый многогранник. Для каждой грани построим вектор внешней нормали. Если вектор нормали грани составляет с вектором проектирования тупой угол ( 90 270), то эта грань не видима и она называется нелицевой. Еслиявляется острым ( 0 << 90 или 270 << 360), то грань видима и называетсялицевой. Таким образом, еслиcos> 0, то грань лицевая, а еслиcos0, то грань нелицевая.

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

Пронумеруем все видимые вершины выпуклого многоугольника против часовой стрелки, а невидимые - по ходу часовой стрелки. Для определения координата Z нормали достаточно 3-х вершин

2

2

3

3

1

1

Взгляд снаружи

(видимая грань)

Взгляд изнутри

(невидимая грань)

Найдем: dX1=X2-X1; dY1=Y2-Y1; dX2=X3-X2; dY2=Y3-Y2;

Вычислим Z=dX1* dY2 - dX2* dY1

Если Z > 0, то грань видима. Если Z 0, то грань невидима.

Алгоритм плавающего горизонта

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

Это алгоритм работает в пространстве изображения. Главная идея данного метода заключается в сведении 3-х мерной задачи к двумерной. Это достигается путем пересечения исходной поверхности последовательностью параллельных секущих плоскостей, имеющих постоянные значения координат X, Y или Z. Поверхность теперь складывается из последовательности кривых, лежащих в каждой из этих плоскостей. Чаще всего используются секущие плоскости с постоянной координатойz. При этом функция сводится последовательности кривыхили, гдеz постоянно на каждой из заданных параллельных плоскостей. Если спроектировать полученные кривые на плоскость Z=0, как показано на рисунке, то становится ясной идея удаления невидимых участков исходной поверхности. Алгоритм сначала упорядочивает плоскости z=const, по возрастанию расстояния до них от точки наблюдения. Затем для каждой плоскости, начиная с ближайшей к точке наблюдения, строится кривая, лежащая на ней, т.е. для каждого значения координаты х в пространстве изображения определяется соответствующее значение у. Если на текущей плоскости при некотором заданном значении х соответствующее значение у на кривой больше значения у для всех предыдущих кривых при этом значении х, то текущая кривая видима в этой точке, а в противном случае она не видна. Реализация данного алгоритма достаточно проста. Для хранения максимальных значений Y при каждом значении Х используется массив, длина которого равна числу различных точек по оси Х в пространстве изображения. Значения, хранящиеся в этом массиве, представляют собой текущие значения «горизонта». Поэтому по мере рисования каждой очередной кривой этот горизонт «всплывает». Фактически этот алгоритм удаления невидимых линий работает каждый раз с одной линией.

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

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

3-х мерные изображений

Для построению 3-х мерных изображений на двумерном экране этого попытаемся формализовать рассмотренные ранее элементы, используемые при изображении объемных предметов.

С этой целью введем некоторую произвольную систему координат, в которой точка объекта задается проекциями на некоторую тройку осей в пространстве. Эту систему назовем абсолютной системой.

В этой системе координат будем рассматривать три основные положения предмета:

Исходное;

Фактическое;

Наблюдаемое.

Исходное положение.

Положение объекта, в котором он определяется, называется исходным.

Большая часть изображений объекта состоит из относительно простых предметов, определенным образом расположенных в пространстве. Обычно информация о предмете включает: координаты вершин предмета (координаты (x, y, z)); информация о линиях, соединяющие вершины; информация о видимых поверхностях, которые часто являются плоскими многоугольниками, ограниченными линиями.

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

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

Чаще всего наблюдатель располагается на оси Z, и взгляд направлен вдоль этой оси. Когда все точки пространства переведены в наблюдаемое положение, то визуальной плоскостью является плоскость, параллельная плоскости X/Y (плоскость экрана). Для простоты будем выбирать в качестве визуальной плоскости плоскость, проходящую через начало координат (z=0).

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

Виды проецирования

ВКГ используется несколько различных видов проектирования. Наиболее часто используются два вида проектирования:

  • параллельное;

  • центральное.

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

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

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

Для описаний преобразований, выполняемых при проектировании, используются однородные системы координат (матрицы 4-го порядка). Такое представление преобразований в ряде случаев упрощает решение задач геометрического моделирования.

Виды проекций