Практические упражнения
14.2.1. Отработайте детали Детально проработайте уравнения (14.1)-(14.3) и докажите, что rc-луч действительно имеет указанное направление. Где находится этот луч в моменты времени г»2иг»-1?
14.2.2. Численное определение местонахождения луча Пусть для камеры заданы eye - (0,0, -5), и - ( 1,0,0), v - (0,1,0). Пусть также ее угол зрения составляет 30°, a aspect - 1,5. Найдите для nRows - 480 и nCols = 640 параметрическое выражение rc-луча при г- 100 и с-200.
14.2.3. Где находятся углы пиксела?
Найдите формулы для координат (и, v) центра re-пиксела, а не его нижнего левого угла.
14.2.4. Инкрементное вычисление лучей Заметим из уравнения (14.3), что вдоль строки развертки луч можно вычислить инкрементно, по его предыдущему значению, с помощью простого (векторного) сложения. Выразите направление dirrc+, через dirr с.
Вначале мы сделаем обзор трассировщика луча, чтобы описать основные операции, которые нам потре буются. Позднее мы опишем, как применять эти операции в программе.
Листинг 14.1. Скелет трассировщика луча (псевдокод)
define the objects and light sources in the scene II определяем объекты и источники света на сцене set up the camera II устанавливаем камеру for(int г - 0: г < nRows: r++) fordnt с - 0: с < nCols; С++)
(14.3)
14.3. Обзор процесса трассировки луча Следя Божественного света… Я. Ф. фон Шиллер (J. С. F. von Schüler)
1. Build the rc-th ray II Строим гс-луч
14.3. Обзор процесса трассировки луча
2. Find all intersections of the rc-th ray with objects in the scene II находим все пересечения гс-луча с объектами на сцене
3. Identify the intersection that lies closest to. and in front of. the eye II идентифицируем пересечение, лежащее ближе
// всего к глазу и перед ним
4. Compute the "hit point" where the ray hits this object, and the normal vector at that point II вычисляем «точку соударения» луча с данным объектом
// и нормальный вектор в этой точке
5. Find the color of the light returning to the eye along the ray from the point of intersection II находим цвет луча света, возвращающегося к глазу вдоль