Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти точку пересечения двух движимых объектов 
:(
    Опции темы
anmig
Дата 17.5.2016, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.5.2016

Репутация: нет
Всего: нет



Здравствуйте. Пишу 2Д игру. Стала задача: двигаются в пространстве два объекта с разной скоростью. Нужно найти точку пересечения их траекторий. Просто геометрией здесь не обойдусь, так как объекты двигаются в пространстве, поэтому нужно учитывать их скорость. Это уже не посильная задача. Есть ли какие нибудь алгоритмы для решения такой задачи? Если нет - подскажите с чего начинать.

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  trajectory.jpg 20,05 Kb
PM MAIL   Вверх
LSD (Online)
Дата 17.5.2016, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



Именно геометрией и можно обойтись. Находишь точку пересечения траекторий (найти точку пересечения 2-х прямых). Затем считаешь момент времени когда там будет первый и второй объекты, если в одно время ±дельта - столкнулись, иначе разошлись.

А так гугли "алгоритмы обнаружение столкновений".


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
anmig
Дата 17.5.2016, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.5.2016

Репутация: нет
Всего: нет



Спасибо за ответ. На самом деле все просто. Но столкнулся с другой проблемой. Если объект В (на картинке) пока не знает с какой траекторией двигаться. Он знает лишь свою скорость. Ему нужно указать угол под которым двигаться чтобы столкнуться с объектом А.
Наглядно: объект А - самолет, который летит прямолинейно с равномерной скоростью. Объект В - снаряд, который должен попасть (перехватить) самолет на лету. Нужно найти угол, под которым снаряд должен сбить самолет


Это сообщение отредактировал(а) anmig - 17.5.2016, 13:13

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  trajectory.jpg 23,50 Kb
PM MAIL   Вверх
Akina
Дата 17.5.2016, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Цитата(anmig @  17.5.2016,  14:08 Найти цитируемый пост)
объект В (на картинке) пока не знает с какой траекторией двигаться. Он знает лишь свою скорость. Ему нужно указать угол под которым двигаться чтобы столкнуться с объектом А.

То есть составить одно уравнение и решить его - проблема?

Координаты точек А и В известны. Скорости известны. Расстояния АС и ВС в зависимости от угла считаются элементарно. Осталось найти угол, при котором соотношение этих расстояний равно соотношению скоростей.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
anmig
Дата 17.5.2016, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.5.2016

Репутация: нет
Всего: нет



Akina, спасибо, но я не очень силен в математике. Да я могу найти расстояния AB, BC в зависимости от угла, но не умею создать уравнение.
Есть:
Точка A
координаты  (ax; ay)
скорость (va)
угол (alpha)

Точка B
координаты  (bx; by)
скорость (vb)
угол - ? (x)

Какая зависимость должна быть между всеми этими данными? И могут ли они пересечься вообще?

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  trajectory.jpg 27,65 Kb
PM MAIL   Вверх
ksnk
Дата 17.5.2016, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата(anmig @  17.5.2016,  13:08 Найти цитируемый пост)
Если объект В (на картинке) пока не знает с какой траекторией двигаться. Он знает лишь свою скорость

Картинка мешает решить.
Нужно нарисовать треугольник ABC и отпустить из точки С перпендикуляр на AB. Получится точка X. Длины AX и BX будут пропорциональны скоростям соответствующих снарядов. Вычисляются статически. Длина самого перпендикуляра - тангенс угла CAX умножить на AX. Итого - осталось вычислить угол треугольника XBC, зная оба катета.  Котангенс.
Осталось перевести решение в твою систему координат ... 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 17.5.2016, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Цитата(ksnk @ 17.5.2016,  20:26)
Нужно нарисовать треугольник ABC и отпустить из точки С перпендикуляр на AB. Получится точка X. Длины AX и BX будут пропорциональны скоростям соответствующих снарядов. 

Чёблин? Если длины гипотенуз соотносятся как va/vb, и длина одного из катетов равна, то отсель никоим образом не следует, что длины вторых катетов имеют то же соотношение.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 17.5.2016, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата(Akina @  17.5.2016,  21:51 Найти цитируемый пост)
Чёблин?

Действительно, блин... Если рассмотреть "клинический" случай, когда ABC имеет практически прямой угол В, то это становится очевидно и мне ... 

Ну, тогда получается просто  система уравнений.
Сумма катетов(AX и XB) пары треугольников равна |AB| , катеты выражены через коcинусы углов на гипотенузы, и катеты СХ обоих треугольников  равны, катет выражен через синусы углов на длины гипотенуз. Длины гипотенуз - скорости на подлетное время. Получаются 2 переменные - время и угол выстрела.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
anmig
Дата 18.5.2016, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.5.2016

Репутация: нет
Всего: нет



ksnk, я правильно понял?

cos(alpha)/x + cos(betha)/y = AB
sin(alpha)/x = sin(betha)/y

Это сообщение отредактировал(а) anmig - 18.5.2016, 07:24

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Рисунок1.jpg 43,14 Kb
PM MAIL   Вверх
ksnk
Дата 18.5.2016, 08:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



косинус -это отношение прилежащего катета к длине гипотенузы. То есть длина этого самого катета получится умножением косинуса на длину гипотенузы. 
так что
гипотенузы - a*t и b*t - a и b - скорости цели и снаряда, t  -неизвестное "подлетное" время.
система

cos(alpha)*a*t + cos(betha)*b*t = AB
sin(alpha)*a*t = sin(betha)*b*t

Блин  smile Получается первое уравнение не нужно, как и 'подлетное время', как и расстояние между целями. Забавно...
betha=arcsin(sin(alpha)*a/b)




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 18.5.2016, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



О господи... 

Совокупность точек, отстоящих от двух заданных точек на расстояниях, соотношение которых задано (va/vb) представляет собой тупо эллипс. По имеющимся данным построить его характеристическое уравнение - секундное дело. Найти точки пересечения эллипса и прямой, если их уравнения известны - тоже задачка на две минуты. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sartorius
Дата 18.5.2016, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37




Цитата(Akina @  18.5.2016,  09:58 Найти цитируемый пост)
Совокупность точек, отстоящих от двух заданных точек на расстояниях, соотношение которых задано (va/vb) представляет собой тупо эллипс.


Можно поподробнее про отношение расстояний?

Как-то привыкли все к сумме расстояний до фокусов
Цитата

Эллипс — геометрическое место точек M евклидовой плоскости, для которых сумма расстояний до двух данных точек F_1 и F_2 (называемых фокусами) постоянна и больше расстояния между фокусами, то есть


PM MAIL ICQ   Вверх
anmig
Дата 18.5.2016, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.5.2016

Репутация: нет
Всего: нет



Цитата

косинус -это отношение прилежащего катета к длине гипотенузы

Я это знаю, ступил. Должно было быть так:
cos(alpha)*x + cos(betha)*y = AB
sin(alpha)*x = sin(betha)*y
Но суть не в том. ksnk, не хочу ставить под сомнение ваше решение, но мне кажеться - там все сложнее. Так как по вашему решению - я всегда найду угол. Но ведь задача может не иметь решения. Пуля может никогда не догнать самолет.
На одном форуме в инете я нашел рассчет перехвата, но там люди обошлись лишь фразами типа "создай уравнение и реши" без конкретного алгоритма что за чем делать. С тригонометрией у меня до сих пор не возникало проблем, а вот высшую математику забыл, учил 10 лет назад и никогда не сталкивался. Суть решения задачи там така: Непонятно каким образом, непонятно с какими данными создается квадратное уравнение. Через дискриминант как-то решается. И наименьшее значение - это минимальное время до столкновения. Если решения нет - объекты никогда не столкнутся. По времени я уже смогу найти угол.
Спасибо всем за внимание к этой теме. Но здесь так же - все лишь говорят - сделай то, или сё, все просто, это секундное дело и т.д. Если мои знания слишком малы для вашего форума, тогда буду искать дальше. Или же отнеситесь с пониманием и помогите шаг за шагом построить этот алгоритм.

Это сообщение отредактировал(а) anmig - 18.5.2016, 10:16
PM MAIL   Вверх
Akina
Дата 18.5.2016, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Цитата(Sartorius @  18.5.2016,  10:57 Найти цитируемый пост)
Можно поподробнее про отношение расстояний?

Как-то привыкли все к сумме расстояний до фокусов

Первый раз сталкиваешься со случаем, когда одна и та же сущность может быть описана двумя разными способами?

Ну не поленись, порисуй уравненьица на бумажке, да... получишь в итоге самое что ни на есть уравнение кривой второго порядка.

Если у тебя идиосинкразия на радикалы - то сразу пиши соотношение квадратов расстояний, оно тоже в описанных условиях константа.

Просто в таком описании эллипса точки А и В не являются фокусами эллипса - и всё.

Цитата(anmig @  18.5.2016,  11:15 Найти цитируемый пост)
Но ведь задача может не иметь решения.

Угу.. эллипс и прямая на плоскости вполне себе могут и не иметь общих точек...

Это сообщение отредактировал(а) Akina - 18.5.2016, 10:23


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sartorius
Дата 18.5.2016, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Цитата(Akina @  18.5.2016,  11:19 Найти цитируемый пост)
получишь в итоге самое что ни на есть уравнение кривой второго порядка.

Хм Разве любое уравнение второго порядка соответствует эллипсу?

Контрпример для твоего утверждения: оба "фокуса" совпадают (вырожденный такой случай ) ) и a/b = 1 - дает всю плоскость. Т.е под это подходит любая точка. Кстати для a/b != 1 решений не существует в этом случае. Так что, как минимум, должны быть какие-то дополнительные условия. 

Если у тебя получилось каноническое уравнение эллипса для этого условия, приведи плз выкладки.
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1777 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.