Как указывалось выше, нет никакого способа сделать вершину ниже высоты пушки (не заставляя гравитацию работать в обратном направлении).Тем не менее, снаряд может пройти через точку под пушкой;все уравнения здесь .Уравнение, которое вам нужно решить:
angle = arctan((v^2 [+-]sqrt(v^4 - g*(x^2+2*y*v^2)))/g*x)
, где вы выбираете скорость и вставляете координаты x и y цели - при условии, что пушка находится в точке (0,0).[+-]
означает, что вы можете выбрать любой root.Если аргумент функции квадратного корня отрицательный (мнимый корень), вам нужна большая скорость.Таким образом, если вы находитесь в «диапазоне», у вас есть два возможных угла для любой конкретной скорости (кроме максимального диапазона 45 градусов, в котором два корня должны давать одинаковый ответ).
Я подозреваю, что одна траектория будет иметь тенденцию «выглядеть» гораздо более разумно, чем другая, но это то, с чем стоит поиграть, когда у вас что-то получится.Вы можете придерживаться кода выпаса апекса для случаев, когда цель находится выше пушки.