Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вычисление нормалей и углов отражения

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

 

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

 

 

 

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

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

Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, которые лежат в плоскости грани. Такими векторами могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус-векторов. Чтобы перейти к радиус-векторам, вве­дем новую систему координат, центр которой совпадает с вершиной 1, а оси — параллель­ны осям бывшей системы. Координаты вершин в новой системе:

 

Рис. 8.4. Одна грань поверхности Радиус-векторы

Теперь назовем ребро (1-2) вектором А, а ребро (1-3) — векто­ром В, как показано на рис. 8.4. Таким образом, положение нор­мали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (х', у', г') выразим формулами для векторного произведения

 

 

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

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

Диффузное отражение. Рассчитаем косинус угла между вектором нормали и направле­нием на источник света. Это можно выполнить таким способом.

Сначала необходимо определить радиус-вектор, направленный на источник света. Обо­значим его как S. Потом для вычисления косинуса угла между радиус-векторами S и N вос­пользуемся формулами скалярного произведения векторов. Поскольку

а также

то получим

 

 

Для упрощения вычислений целесообразно использовать векторы S и N единичной дли­ны, то есть |S|*|N| = 1.

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

 

Зеркальное отражение. Будем считать, что задан радиус-вектор S, направленный на ис­точник света, а также известен радиус-вектор нормали N. Нужно найти косинус угла между отраженным лучом и направлением камеры.

Сначала необходимо вычислить радиус-вектор отраженного луча. Обозначим его как R. Выпол­ним некоторые геометрические построения, как показано на рис. 8.5.

 

Рис. 8.5. Векторы R1, S1 и N1 –единичной длины

 

Для решения нашей задачи сначала рассмот­рим единичные векторы R1, S1, и N1. Поскольку векторы нормали, падающего луча и отраженного луча находятся в одной плоскости, то можно за­писать R1 + S1 = N1, где N1 — это вектор, который соответствует

диагонали ромба и совпадает по yаправлению с нормалью. Длина вектора N1 равняется 2cosq. Поскольку вектор N1 по на­правлению совпадает с N1, то

или

 

Отсюда находится единичный вектор отраженного луча:

 

Найдем cosq. Для этого используем скалярное произведение векторов N и S:

 

Подставим это значение в выражение для R1:

 

Полагая, что искомый вектор отраженного луча будет иметь такую же длину, что и вектор падающего луча, т.е. R = S R1 , получим:

Это решение в векторной форме. Запишем координаты вектора R:

 

 

Теперь осталось найти косинус угла между отраженным лучом и направлением камеры. Пусть K – радиус-вектор, направленный на камеру. Найдем искомый косинус угла:

 

Для упрощения вычислений целесообразно задавать векторы S, N и R единичной длины (тогда и R будет единичным).

<== предыдущая лекция | следующая лекция ==>
Модели отражения света | 
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 4343; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.