// true if ray is inside combined object: // true, если луч внутри составного обьекта Существуют и состояния луча между соударениями - то есть до рассмотрения следующего соударения. Начальное значение переменной lftlnside задается в соответствии с тем, входит ли луч в левый объект или выходит из него, то есть в соответствии со значением L[0]. i sEnteri ng. Говоря более конкретно, величина lftlnside равна false, если при первом соударении имеет место вхождение луча (поскольку до этого соударения луч должен быть снаружи), и равна true, если первое соударение - выход. Поэтому можно инициализировать величину 1 ftlnside как !L[0]. isEntering. Аналогично осуществляется инициализация rtlnside. Затем величина comblnside находится как логическая комбинация 1 ftlnside и rtlnside: если оператор - union, то comblnside равна true в том случае, если равны true 1 ftlnside, rtlnside или оба вместе. Это может быть описано при помощи логических операторов

comblnside « lftlnside II rtlnside

Зо Ф. Хилл

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

Если оператором является intersection, то используется формула

comblnside = lftlnside && rtlnside.

Для оператора difference формула имеет вид

comblnside - lftlnside && Irtlnside.

Далее алгоритм движется по обоим спискам L[] и R[], на каждом шаге фиксируется наименьшее из времен соударения, используемое для обновления значений 1 ftlnside, rtlnside, comblnside. Если в какой-либо точке значение comblnside изменяется, то более позднее событие соударения добавляется в список С[].

Когда список L[] или R[] окажется исчерпанным (то есть когда в нем просмотрено последнее время соударения), то с оставшимся неисчерпанным списком можно проделать следующее: О В случае пересечения неисчерпанный список игнорируется.

О В случае объединения неисчерпанный список просматривается и его события соударения добавляются как обычно.

О В случае разности: если неисчерпанным оказался левый список, то он просматривается, и его события соударения добавляются как обычно. Если же неисчерпанным является правый список, то он игнорируется.


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