Курсовая работа: Построение реалистичного изображения методом обратной трассировки лучей

Требуется найти единичный вектор преломленного луча T1 . Для решения выполним некоторые геометрические построения.

Искомый вектор T1 равен сумме двух векторов:

T1 = NT + B.

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

sin α2 = n sin α1 ,

где n = n1 / n2 .

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

NT = -N1 √1+n2 ((S1 N1 )2 – 1).

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

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

|B|/|A| = sin α2 / sin α1 = n2 /n1 = n,


откуда |B| = n |A|. Учитывая взаимное расположение векторов A и B, получим

B = –nA =n(N1 (S1 N1 ) – S1 ).

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

Вычисление точки пересечения с примитивами

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

R = A + Vt,

где R – радиус вектор произвольной точки, принадлежащей лучу, A – радиус- вектор начальной точки луча, V – направляющий вектор луча, t – параметр.Если направляющий вектор V нормализовать, то параметр t будет численно равен расстоянию от начальной точки луча A до точки R.

Можно записать это уравнение в координатном виде:

x = x1 + at,

y = y1 + bt,

z = z1 + ct.

Здесь x1, y1, z1 – координаты начальной точки луча в прямоугольной декартовой мировой системе координат, a,b,c – координаты направляющего вектора луча.

Вычисление точки пересечения луча с поверхностью второго порядка.

Для нахождения точки пересечения луча, заданного уравнениями (2) с поверхностью второго порядка, заданной уравнениями (2.2.2.3) или (2.2.2.4):

(x–x0 )2 /A2 + (y–y0 )2 /B2 + (z–z0 )2 /C2 = 1 (эллипсоид)

(x–x0 )2 /A2 + (y–y0 )2 /B2 – (z–z0 )2 /C2 = 1 (параболоид),

нужно подставить в уравнение поверхности второго порядка вместо x, y и z соответствующие уравнения луча. В результате этого после раскрытия всех скобок и приведения подобных мы получим квадратное уравнение относительно параметра t. Если дискриминант квадратного уравнения меньше нуля, то луч и поверхность второго порядка общих точек пересечения не имеют. В противном случае можно будет вычислить два значения параметра t. Дискриминант может быть равен нулю – это соответствует предельному случаю касания луча поверхности, и мы получим два совпадающих значения параметра t.

Для нахождения координат точек пересечения луча и поверхности достаточно подставить найденные значения параметра t в уравнения луча (2).

В программе при нахождении двух пересечений для визуализации выбирается ближнее из них. Ближнее пересечение определяется путем сравнения найденных параметров t. Ближе к точке наблюдения находится то пересечение, которому соответствует меньший параметр t. Тут надо заметить, что в результате решения квадратного уравнения одно или оба значения параметра t могут получиться отрицательными. Это означает, что точка пересечения лежит «сзади» относительно точки начала луча, на половине прямой, находящейся «по нашу сторону» относительно картинной плоскости. Такие точки при поиске пересечения отбрасываются.

К-во Просмотров: 336
Бесплатно скачать Курсовая работа: Построение реалистичного изображения методом обратной трассировки лучей