Пересечение Луч-Капсула - PullRequest
0 голосов
/ 12 августа 2011

У меня есть капсула, определяемая двумя точками A и B и радиусом r.Луч определяется уравнением: X = O + D*t.Теперь мне нужно получить t для всех (0-2) точек пересечения.

Одним из возможных решений было бы вычисление пересечения со сферами в A и B и пересечений с цилиндром.Тогда, поскольку капсула является выпуклой, я бы просто взял минимум и максимум из всех полученных t значений.

Но, как гласит wikipedia , проверка пересечения капсулы должна быть даже проще, чем проверка пересечения цилиндра.Может ли кто-нибудь указать мне эффективный алгоритм пересечения капсул с лучами?

Ответы [ 3 ]

5 голосов
/ 12 августа 2011

Чтобы проверить, пересекает ли капсула лучевую линию, просто проверьте расстояние между точками пересечения сегмента A и B и лучевой линией.Если расстояние меньше радиуса r, то есть две пересекающиеся точки, если равно, есть одна точка соприкосновения.

Для вычисления пересечения выполните действия, описанные вами.

2 голосов
/ 07 апреля 2016

Использование ближайшей точки между лучом и сегментом не работает при всех обстоятельствах, если луч находится в радиусе капсулы и приблизительно параллелен / малый угол к капсуле, то это может привести к вычислению столкновения в другом конец капсулы

0 голосов
/ 12 августа 2011

Просто предположение: Википедия означает пересечение двух капсул, действительно, кажется, проще пересечения двух цилиндров.

Я бы искал точки пересечения, как вы описали ...

...