Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GM1.doc
Скачиваний:
2
Добавлен:
27.11.2019
Размер:
890.88 Кб
Скачать

4. Удаление невидимых линий.

Существует большое число способов решения этой задачи. Многие из них ориентированы на специализированное применение. Наилучшего решения задачи удаления скрытых линий и поверхностей не существует. Почти все алгоритмы удаления скрытых линий и поверхностей включают в себя сортировку по геометрическому расстоянию от тела до точки наблюдения. Основная идея сортировки — чем дальше объект, тем больше вероятность, что он будет заслонен другим объектом.

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

  1. Алгоритмы, работающие в объектном пространстве (ОП) (каждая из n граней сравнивается с оставшимися n-1);

    • они имеют дело с физической СК, в которой описаны эти объекты;

    • весьма точны (полученные изображения можно легко увеличить в несколько раз);

    • объем вычислений теоретически n2.

  2. Алгоритмы, работающие в пространстве изображения (ПИ) (надо определить, какая из n граней видно в каждой точке разрешения экрана), т.е. каждый объект сравнивается с каждым пикселем экрана:

  • имеют дело с СК экрана, на котором изображается;

  • точность ограничена разрешающей способностью экрана (если полученные результаты потом увеличивать во много раз, они не будут соответствовать исходному изображению);

объем вычислений теоретически — Nn пикселей.

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

Шаги:

  • Упорядочиваю все объекты в соответствии с их большими z-координатами.

  • Далее нужно разрешить все неопределенности, которые возникают при перекрытии z-оболочек (исследуется x-оболочка и y-оболочка).

  • Преобразовываю каждый из объектов в растровую форму в порядке уменьшения z-координаты.

5. Закраска изображения с учетом освещения.

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

Свет точечного источника отражается от идеального рассеивателя по закону косинусов Ламберта: интенсивность отражённого света пропорциональна косинусу угла между направлением света и нормалью к поверхности, т. е.

где I – интенсивность отражённого света;

Il – интенсивность точечного источника;

Kd – коэффициент диффузного отражения (0  Kd  1). Зависит от материала и длины волны света, но в простых моделях освещения обычно считается постоянным;

 – угол между направлением света и нормалью к поверхности. Если > Pi/2, то источник света расположен за объектом. Коэффициент диффузного отражения Kd зависит от материала и длины волны света, но в простых моделях освещения обычно считается постоянным.

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

Для реализации закраски объекта с учетом освещения в курсовой работе я реализовала следующий метод:

  • Разбила тела на полигоны (грани).

  • Рассчитала координаты вектора, направленного от источника света к средней точке грани. Для этого от координат средней точки грани отняла одноименные координаты точки освещения.

  • Рассчитала координаты вектора-нормали к грани (направленного из тела).

  • Рассчитала величину угла между вектором-нормалью и вектором от источника света. Если этот угол = 0 – тогда максимальная освещённость. По мере увеличения угла освещенность падает.

  • Определила значение интенсивности цвета грани RGB.

  • Отрисовывается грань с цветом, вычисленным на предыдущем шаге.

Необходимые математические расчеты, которые я использовала для реализации этого метода:

Любую плоскость можно задать 3-мя точками, точкой и прямой, двумя прямыми.

Уравнение плоскости Ax + By + Cz + D = 0

Найдем коэффициенты плоскости. Пусть нам даны точки Т1(x1,y1,z1), T2(x2,y2,z2), T3(x3,y3,z3).

Для нахождения коэффициентов А, В, С для нормали воспользуюсь уравнением плоскости по трём точкам:

Пусть: Ap = x2 x1 Dp = x3 x1

Bp = y2 y1 Ep = y3 y1

Cp = z2 z1 Gp = z3z1

Тогда коэффициенты плоскости:

A = BpGpEpGp

B = ApGpCpDp

C = ApEpBpDp

D = -( Apx1 + Bpy1 + Cpz1 )

– нормаль к плоскости

– направление к источнику света

– координаты источника света в мировой системе координат.

– средняя точка граней.

; ; , где N – число точек граней.

, где и длины векторов.

;

; ;

Тогда:

cos = .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]