Курсовая работа: Реализация алгоритма обратной трассировки лучей для моделей с большим числом полигонов
В случае если, 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 , запишем закон преломления
.
Воспользуемся тождеством
Получим