При рассмотрении вопроса об обратной трассировке лучей часто говорится, что один из самых простых и удобных для этого объектов - сфера. Это связано с лёгкостью определения точки пересечения (или определения её отсутствия) луча и сферы, а также с тем, что нормаль в точке касания совпадает по направлению с вектором, выпущенным из центра сферы к этой точке.
Один и тот же объект можно определить различными способами. Вспомним, какое множество точек соответствует сфере S с центром в точке \( O(x_0, y_0, z_0) \) радиуса \( r \) :
Стоит отметить, что если в качестве \( \rho (x, y) \) брать другие функции (но всё же являющиеся метриками), то мы вновь будем получать сферы S, но в других метрических пространствах.
Заметим, что если мы выберем функцию \( \rho(x, y) \), как максимум из модулей разностей соответствующих координат:
Получим для него и уравнение:
Теперь будем искать точки пересечения луча и куба. Для этого подставим вместо \(x, y, z\) соответствующие равенства из параметрической записи луча:
Если приращение по какой-то координате нулевое, то соответствующие решения рассматривать не будем. Предположим, что \( \vec{\Delta}_x \neq 0, \vec{\Delta}_y \neq 0, \vec{\Delta}_z \neq 0 \), тогда сможем записать решения каждого уравнения:
\( t_1 = \frac{r + x_0 - x_s}{\vec{\Delta}_x} \) | \( t_2 = -\frac{r + x_0 - x_s}{\vec{\Delta}_x} \) |
\( t_3 = \frac{r + y_0 - y_s}{\vec{\Delta}_y} \) | \( t_4 = -\frac{r + y_0 - y_s}{\vec{\Delta}_y} \) |
\( t_5 = \frac{r + z_0 - z_s}{\vec{\Delta}_z} \) | \( t_6 = -\frac{r + z_0 - z_s}{\vec{\Delta}_z} \) |
Сформируем из чисел \( t_1, t_2, ... , t_6 \) новый набор решений \( t_1', t_2', ... , t_s' \) так, чтобы для любого \( t_i' \ (1 \leq i \leq s \leq 6) \) выполнялась система неравенств:
Если набор решений \( t_1', t_2', ... , t_s' \) оказался не пуст, то параметру \( t = \min(t_1', t_2', ... , t_s') \) будет соответствовать точка пересечения луча и куба.
Приведённое рассуждение справедливо только для куба с произвольным центром и гранями, нормали к которым коллинеарны координатным осям. Однако, мы можем воспользоваться соответствующим преобразованием пространства, чтобы свести общий случай (когда грани как-то повёрнуты относительно центра куба) к этому частному.