2010-07-12 3 views
1

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

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

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

+0

Если вы нажмете пушку вниз и не беспокойтесь о том, чтобы попасть в землю, то у вас не будет вершины на пути (то есть точки, где вертикальная составляющая скорости равна нулю). Вертикальная составляющая скорости будет просто неограниченно возрастать. Вы просто хотите, чтобы снаряд прошел через точку? Я думаю, что это даст вам неограниченное количество возможных путей на выбор. –

+0

Если цель находится ниже пушки, невозможно попасть в цель на вершине (высшей точке) пути. Если угол меньше горизонтального, вершина является исходной точкой снаряда! – Leftium

+0

Вы, ребята, прав, я должен был сформулировать свой вопрос лучше. Когда стреляешь под пушкой, я просто хочу, чтобы она прошла через цель. – Rob

ответ

0

Как указывалось выше, нет никакой возможности сделать вершину ниже высоты пушки (без придания силы тяжести назад). Однако возможно, что снаряды проходят через точку ниже пушки; все уравнения - here. Уравнение вам нужно решить это:

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

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

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

+0

Работал как шарм. Спасибо, Эндрю! – Rob

Смежные вопросы