Вопросы к 35 - p1xelse/CG GitHub Wiki

Какую трассировку используем? Прямую или обратную?

Обратную. Неэффективно рассматривать прямую, т.к. не все лучи доходят до наблюдателя.

Основные затраты (время, ресурсы) будут связаны с решением какой задачи?

Пересечение луча с объектом.

Как-то можно снизить затраты?

Мы можем использовать оболочки. Сферическую или параллелепипед, например.

Как определить факт пересечения с параллелепипедом?

Фактически с гранью мы не можем установить пересечение. Если плоскость, которая задаётся бесконечной прямой, пересекается с плоскостью, заданной гранью, значит не обязательно, что луч пересечёт оболочку (одного пересечения не достаточно).

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

Какая предпочтительная и почему?

Сферическая предпочтительная, потому что мы ищем расстояние от центра оболочки до луча и если это расстояние превосходит радиус сферы - очевидно можно отбросить.

В какой системе координат решаем задачу?

В исходной будет не удобно. Надо будет выполнить преобразование.