Координаты попадания снаряда на вершине его пути - PullRequest
1 голос
/ 12 июля 2010

У меня есть снаряд, который я хотел бы пропустить через определенные координаты на вершине своего пути. Я использовал превосходное уравнение, которое giogadi обрисовал в общих чертах здесь , включив значения скорости, которые это производит, в функцию cpBodyApplyImpulse бурундука.

У уравнения есть один недостаток, который я не смог выяснить. Это работает только тогда, когда координаты, по которым я хочу попасть, имеют значение y выше, чем у пушки (где начинается мой снаряд). Это означает, что я не могу стрелять под углом вниз.

Может кто-нибудь помочь мне найти подходящее уравнение, которое работает независимо от того, где находится цель по отношению к пушке?

1 Ответ

0 голосов
/ 12 июля 2010

Как указывалось выше, нет никакого способа сделать вершину ниже высоты пушки (не заставляя гравитацию работать в обратном направлении).Тем не менее, снаряд может пройти через точку под пушкой;все уравнения здесь .Уравнение, которое вам нужно решить:

angle = arctan((v^2 [+-]sqrt(v^4 - g*(x^2+2*y*v^2)))/g*x)

, где вы выбираете скорость и вставляете координаты x и y цели - при условии, что пушка находится в точке (0,0).[+-] означает, что вы можете выбрать любой root.Если аргумент функции квадратного корня отрицательный (мнимый корень), вам нужна большая скорость.Таким образом, если вы находитесь в «диапазоне», у вас есть два возможных угла для любой конкретной скорости (кроме максимального диапазона 45 градусов, в котором два корня должны давать одинаковый ответ).

Я подозреваю, что одна траектория будет иметь тенденцию «выглядеть» гораздо более разумно, чем другая, но это то, с чем стоит поиграть, когда у вас что-то получится.Вы можете придерживаться кода выпаса апекса для случаев, когда цель находится выше пушки.

...