netlib.narod.ru< Назад | Оглавление | Далее >

Лучи

Предположим, что в разрабатываемой нами игре игрок стреляет из ружья в противника. Как определить попала ли в цель пуля, выпущенная из заданной точки в указанном направлении? Один из возможных подходов: моделирование траектории пули с помощью луча и моделирование врага с помощью ограничивающей сферы (bounding sphere). (Ограничивающая сфера — это просто сфера минимального диаметра, в которую помещается весь объект целиком, что позволяет приблизительно представить занимаемый им объем. Более подробно об ограничивающих сферах мы поговорим в главе 11.) Тогда с помощью математических вычислений мы можем определить пересекает ли луч сферу и, если да, то где. В данном разделе мы обсудим математическую модель лучей.

Лучи

Луч описывается путем указания начальной точки и направления. Параметрическая формула луча выглядит следующим образом:


формула 51


Рис. 14. Луч

Рис. 14. Луч, заданный начальной точкой p0 и вектором направления u. Мы можем генерировать точки луча, подставляя в формулу различные значения t, которые должны быть больше или равны нулю


В формуле луча p0 — это начальная точка, u — это вектор, задающий направление луча, а t — это параметр. Подставляя различные значения t, мы сможем получать координаты различных точек луча. Причем для луча значение t должно находиться в диапазоне [0, ∞). Значения меньше нуля приведут к вычислению координат точек, находящихся за лучом (на прямой, частью которой является луч). Фактически, если t принимает значения из диапазона (–∞, ∞), мы получаем линию в трехмерном пространстве.

Пересечение луча и плоскости

Предположим, у нас есть луч p(t) = p0 + tu и плоскость n Ч p + d = 0, и мы хотим определить пересекает ли луч плоскость и, если да, то вычислить координаты точки пересечения. Для этого мы помещаем формулу луча в формулу плоскости и вычисляем такое значение параметра t, которое удовлетворяет уравнению плоскости. Подстановка найденного значения в уравнение луча позволяет вычислить координаты точки пересечения.

Подставляем формулу (9) в формулу плоскости:


формула 52

Подставляем уравнение луча в формулу плоскости.

формула 53

 

формула 54

Раскрываем скобки.

формула 55

 

формула 56

Выносим за скобки переменную.

формула 57

Решение для t.


Если значение t не находится в диапазоне [0, ∞), значит луч не пересекает плоскость.

Если значение t находится в диапазоне [0, ∞), точка пересечения находится путем подстановки найденного значения параметра в формулу луча:


формула 58


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz