Показать сообщение отдельно
Старый 12.12.2006, 13:36
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 1  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
По умолчанию Проблема с математикой. Оч требуются физ-мат-подготовленные.

Тело движется с постоянным ускорением по x и по y. Дано: начальные и конечные координаты по {x,y}, ускорение по x, y. А также соотношение Vx к Vy (начальными скоростями). Надо найти |Vx| и |Vy|. Третий день бьюсь.

Для примера: вспомните баллистику игры вормс. Так вот надо написать AI. Нужно при указанном ветре и гравитации попасть в опред точку.

Направление мыслительной деятельности:
Код:
{ x = w*t*t/2 + Vx*t + x0
{ y = g*t*t/2 + Vy*t + y0

{ w*t*t/2 + Vx*t - dx = 0
{ g*t*t/2 + Vy*t - dy = 0

Запуляем тело под углом "a" к горизонту. Тогда
Vx = V*cos(a)
Vy = V*sin(a)
тогда Vy = Vx*tg(a), подставляем в систему Vy.

{ w*t*t/2 + Vx*t - dx = 0
{ g*t*t/2 + Vx*tg(a)*t - dy = 0

домножаем верхнюю строку на tg(a) и вычитаем нижнюю. Получаем

t*t*(w*tg(a) - g)/2 - dx*tg(a) + dy = 0 
, тогда
t = Math.sqrt(2*(dx*tg(a) - dy)/(w*tg(a)-g))
Из этого следует, что при слабом или противоположном по отношению к Vx ветре решения нет. А оно должно быть. Это очевидно. Стоит просто пульнуть тело посильнее в нужную сторону и оно попадет куда угодно.

Никак не могу найти ошибку в логике.