@maxyc_webber
Web-программист

Как рассчитать точку и время пересечения 2 объектов?

Есть 2 объекта на карте. один движется слева на право, второй сверху вниз. Известна скорость и время начала пути.
1. Как узнать, пересекутся ли два объекта?
2. Как узнать время и место пересечения?
3. Тоже самое, но на карте. один из мск в екб, другой из питера в челябинск. Где и когда пересекутся?
Интересует вектор поиска ответа на вопрос. Не знаю даже куда копать. 3 вопрос подозреваю можно решить, зная сумму сегментов пути, потому по сути получится частным случаем первых двух вопросов.

Перекладывать на фронтенд не получится. Рассчеты должны на сервере.
  • Вопрос задан
  • 1033 просмотра
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos Куратор тега Разработка игр
Вариант в лоб, но без 3 пункта.
У вас есть точка старта и вектор направления. Исходя из этого вы строите прямую, проходящую через точку старта и совпадающцю (не уверен в термине) с вектором. Получаете естественно уравнение прямой. То же делаете для второй точки. Далее находите точку пересечения этих двух прямых (это легко, зная их уравнения). Отлично, точка пересечения есть. И она единственная (если существует - прямые могут быть параллельны). Далее считаете расстояние из первой точки в точку пересечения, и из второй в точку пересечения. Берете скорости объектов (они должны быть известны - иначе нерешаемо), и считаете сколько каждому потребуется для преодоления пути из стартовой точки в точку пересечения. Если время совпало - пересекутся.
Ответ написан
jamakasi666
@jamakasi666
Просто IT'шник.
Т.к. в тегах игра для примера оттолкнемся от апдейтов.
Предположим что у вас игровая логика апдейтится 60 раз в секунду.
Мы знаем стартовые точки, направление и ускорение у обоих точек ("А" и "В").
Предположим что движения вы тоже апдейтите вместе с логигой 60 раз в секунду(просто такое обычно вяжут по своему и может быть не 60 а меньше или наоборот больше).
Зная все вышеперечисленное делаете все по шагам опять же для примера и понимания:
1) Найти абстрактно точку пересечения без учета времени "С". Если такой точки не существует значит остальные пункты пропускаем.
2) Самым обычным циклом произвести вычет сколько времени потребуется точке "А" для достижения точки пересечения "С" с учетом скорости и направления.
3) Повторить пункт (2) для точки "В".
4) Сравнить результаты полученные на шаге (2) и (3) и если они равны значит точки пересекутся.
Ответ написан
@GreatRash
https://code.tutsplus.com/tutorials/predicting-col...
Чтобы позырить примеры нужен флэш.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы