Алгоритм поиска raycast для «специальной» капсулы - PullRequest
0 голосов
/ 12 октября 2018

У меня есть два круга, соединенных вместе, как это: Capsule with 2 radius

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

Ray inside capsule

Моей первой мыслью будет Raycast с двумя сегментами, соединяющими 2 круга,И если не будет удачного попадания, я сделаю рейкаст с двумя кругами и займу самую дальнюю позицию попадания.Есть ли лучшее решение?Более эффективные вычисления?

Спасибо за ваши ответы

1 Ответ

0 голосов
/ 12 октября 2018

Предполагается, что у вас есть вектор направления луча D=(dx, dy), а точка источника находится внутри капсулы

Если у вас есть центральная ось, используйте ее вектор направления A, в противном случае получите вектор направления S, S любого сегмента.

Сначала решите, какой сегмент может пересекаться: найдите перекрестное произведение A x D или S x D и посмотрите на его знак.Положительный знак означает, что вы должны проверять только пересечение с «левым» сегментом, отрицательный - пересечение с «правым» сегментом.

...