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

    На этом шаге мы приведем решение этой задачи.

    Сформулируем задачу следующим образом. Заданы два единичных вектора: S1 - это радиус-вектор, направленный на источник, и N1 - радиус-вектор нормали к границе раздела двух сред. Также должны быть известны два коэффициента преломления для данных сред - n1 и n2 (или же их отношение).

    Требуется найти единичный радиус-вектор преломленного луча Т1. Для решения этой задачи выполним некоторые геометрические построения (рисунок 1).


Рис.1. Преломление

    Нанесем еще несколько радиус-векторов (далее мы их все для краткости будем называть векторами).

    Искомый вектор T1 равен сумме двух векторов: T1=NT + В.

    Найдем вначале вектор NT. Он противоположен по направлению вектору нормали, а его длина равна |T1| cos α2 = cos α2 (поскольку по условию задачи Т1 - единичный). Таким образом, NT = -N1 cos α2. Необходимо определить cos α2. Запишем закон преломления n1 sin α1 = n2 sin α2 в виде:

  sin α2 = n sin α1
где n = n1/n2.

    Воспользуемся тождеством cos2x +sin2x = 1. Тогда

    Значение cos α1 можно выразить через скалярное произведение единичных векторов S1 и N1, то есть cos α1 = S1 * N1. Тогда мы можем записать такое выражение для вектора NT:

    Осталось найти выражение для вектора В. Он располагается на одной прямой с вектором А, причем А = S1 - NS. Учитывая, что вектор NS равен N1 cos α1, то A = S1 - N1 cos α1. Так как cos α1 = S1 * N1, то A = S1 - N1 (S1 - N1).

    Поскольку длина вектора А равна sin α1, a длина вектора В равна sin α2, то

откуда |В| = n|А|. Учитывая взаимное расположение векторов А и В, получим B = -nA = n(N1(S1 * N1) - S1).

    Теперь мы можем записать искомое выражение для единичного радиус-вектора луча преломления Т1:

    Если подкоренное выражение отрицательно, то преломленный луч не существует. Это соответствует так называемому полному внутреннему отражению [1, 2, 3].

    Это решение задачи в векторном виде. Используя полученное выражение, можно записать координаты вектора T1.


(1)Кошкин Н.И., Ширкевич М.Г. Справочник по элементарной физике. - М.:Наука, 1980. - 208 с.
(2)Хвольсон О.Д. Курс физики. В пяти томах. Издание пятое. Том второй. - Берлин, Государственное издательство, 1923. - 774 с.
(3)Шикин Е.В., Боресков А.В. Компьютерная графика. - М.: ДИАЛОГ-МИФИ, 1995.

    На следующем шаге мы рассмотрим трассировку лучей.




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