Курсовая работа: Реализация алгоритма обратной трассировки лучей для моделей с большим числом полигонов

В случае если, NZ равно нулю, луч параллелен оси OZ и соответственно лучу. Значит, пересечения нет. В другом случае пересечение есть.

Находим координаты пересечения.

Составим уравнение плоскости, в которой находится треугольник:

,

подставим x=0 и y=0,

2.3.4 Формирование отраженного луча



Обозначим отраженный луч через R, вектор, направленный против падающего луча - S, вектор нормали - N. Рассмотрим единичные векторы этих векторов R1 , S1 , N1 . Так как все три вектора находятся в одной плоскости, то можно записать R1 +S1 =N . Длина вектора N равна 2cosθ. Так как векторы N и N1 сонаправленные, то можно записать:

N’=N1 2cosθ.

Таким образом

.

Поставим условие, что падающий и отраженный лучи имеют одинаковую длину.

Так как падающий луч в локальной системе координат имеет координаты (0, 0,1). То вектор S будет иметь координаты (0, 0, - 1). Подставим его координаты в выражение для отраженного луча. Получим

2.3.5 Формирование преломленного луча


Обозначим преломленный луч, имеющий единичную длину, через T1 . Единичный вектор нормали - через N1 . А вектор, направленный противоположно падающему лучу - через S1 . Разложим вектор S1 на A и Ns , а вектор T1 на B и NT . Вектор равен

.

Найдем вектор NT . Этот вектор противоположен по направлению вектору нормали, а длина его равна

.

Таким образом

.

Для того, что бы определить cosα2 , запишем закон преломления

.

Воспользуемся тождеством

Получим

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