Пересечение луча с поверхностью - Моделирование эффектов

Алгоритм расчета пересечения луча с ограниченной поверхностью, представленный на рис.1 имеет следующие шаги:

Рисунок 1

Шаг 1. Рассчитываются все точки пересечения луча

С неограниченной поверхностью. Для этого решается скалярное уравнение

Относительно параметра t, если поверхность задана в НФ уравнением f(p)=0. Если она определена параметрической функцией, то решается векторное уравнение

Относительно трех параметров. Отсутствие действительных решений t означает, что несущая луч прямая не пересекает поверхность.

Шаг 2. Список полученных точек сортируется по возрастанию значений и из него исключаются элементы, не принадлежащие лучу. Если оставшийся список пуст, то луч (2) не пересекает поверхность.

Шаг 3. Ищется ближайший к началу списка элемент, для которого выполняются условия. Исполнение любого из этих условий означает, что луч (3) не пересекает поверхность внутри ее границ. Найденный элемент является искомой точкой на луче (4).

Рассмотрим вычислительные аспекты расчета пересечения прямой с поверхностью. Точное аналитическое решение уравнений

Или

Возможно лишь для некоторых простейших поверхностей первого (плоскость в НФ или ПФ) и второго (в НФ) порядков. Пересечения луча с более сложными поверхностями находится численными методами. Рассмотрим некоторые из них.

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

Неявная функция поверхности имеет значения

.

Первый же найденный интервал

,

На котором выполняется условие, пропорционально дробится точкой

На два интервала и. Из них выбирается интервал с разнозначными концевыми значениями НФ, для которых. Дихотомический процесс дает последовательность значений и заканчивается при достижении желаемой точности по аргументу или (и) функции.

Пример.

Из точки q = [10 1 0] выпущен луч

В направлении, задаваемом вектором V = [-2 -0.1 -0.2]. Рассчитать пересечение луча с поверхностью, описываемой явным уравнением

С параметрами a=0.02, , .

Решение.

Решим поставленную задачу с помощью реализации в MathCad.

Подставляя заданные параметры, получаем уравнение плоскости вида:

График функции представлен на рис.2:

Рисунок 2

Задачу пересечения будем решать как задачу поиска корней функции:

Зависимости вертикального расстояния от точки p(t)=[x(t), y(t), z(t)].

Из графика, приведенного на рис. 3 видно, что луч пересекает поверхность в четырех точках.

Рисунок 3

Средствами MathCad найдем корни уравнения и соответствующие точки пересечения:

В результате 3 точки пересечения луча с плоскостью были найдены.

Похожие статьи




Пересечение луча с поверхностью - Моделирование эффектов

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