Введение в трассировку лучей

В 1637 году Декарт (Descartes) объяснил форму радуги с помощью простых аргументов, основанных на прослеживании лучей. На рис. 14.50, б показан наблюдатель, стоящий спиной к солнцу и смотрящий на туман из дождевых капель. Когда наблюдатель смотрит примерно под 42° в сторону от солнца, то он видит кольца света. Капельки, расположенные вдоль конуса с определенным углом, отражают назад свет одного цвета; при небольшом изменении угла этот цвет плавно изменяется. Таким образом, радуга представляет собой совокупность круговых колец, и при этом каждый наблюдатель имеет свою личную радугу.

Определение направления преломленного луча t

Для трассировки лучей нам понадобится направление t (см. рис. 14.48) между нормалью к поверхности m и направлением луча dir. Определим его при помощи не зависящих от системы координат скалярных произведений, тогда полученный результат будет применим для любых направлений dir и т. Как мы увидим в упражнениях, искомый вектор t является линейной комбинацией векторов m и dir (в предположении, что оба этих вектора нормированы к единичной длине). В частности, Можете проверить правильность значения полученного вектора t для случаев, когда скорость света одинакова в обеих средах или когда угол падения равен 0°.

Полное внутреннее отражение будет иметь место тогда, когда подкоренное выражение в уравнении (14.47) становится отрицательным; при этом вектор t перестает существовать. Это происходит при значениях угла, равных или превышающих критическое. В упражнениях вам предлагается написать реализацию подпрограммы transmitDi recti on О, в которой вычисляется вектор t. Отметим, что, поскольку при выводе t были использованы только скалярные произведения, он в равной степени применим и к двумерному случаю. В тематическом задании 14.8 вам предлагается написать программу, демонстрирующую преломление в двух направлениях.

При разработке трассировщика лучей проще всего моделировать прозрачные объекты таким образом, чтобы их коэффициент преломления не зависел от длины волны света. Тогда для трассировки красных, зеленых и синих компонентов можно будет использовать одни и те же лучи. В противном случае потребуется раздельная трассировка лучей для каждого компонента цвета, так как они преломляются в слегка различающихся направлениях. Такая раздельная трассировка будет дорогостоящей с вычислительной точки зрения и все равно даст вам лишь приближение к реальности, поскольку точная модель преломления света потребовала бы учета большего количества цветов, а не только трех основных.


⇐ Предыдущая| |Следующая ⇒