Бесконечная поверхность конуса * Проверка пересечения AABB

I '

  • Пересечь его линию с конусом.
  • Если точка пересечения находится в пределах AABB:
    • Вернуть истину.
  • Если точка пересечения находится на определенной стороне AABB:
    • x + = 1
  • Если x == 0 или x == 4 (все пересечения были на одной стороне AABB):
    • Вернуть ложь.
  • Вернуть истину.
  • Кто-нибудь может придумать более эффективный? Похоже, это требует большого количества дополнительной работы, вычисляя пересечение каждой линии.

    РЕДАКТИРОВАТЬ:

    Вышеупомянутый алгоритм плохой, например:

    cone hits untested axis of box

    Конус может пересекать только один край прямоугольника таким образом, что все пересечения осей и линий находятся на одной стороне, поэтому приведенный выше алгоритм не работает, если все ребра не проверены или проверяемые ребра не выбраны разумно (может быть, ребра, ближайшие к конусу?).

    РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: См. мои собственный ответ ниже для решения, которое я обнаружил позже, которое кажется мне почти оптимальным.

    7
    задан Forrest Voight 1 November 2013 в 20:20
    поделиться