Математическая (и физическая) часть
Так что это похоже на физику 10-го класса для меня.
Путь, пройденный снарядом, - (как вы сказали) парбола, описываемая уравнением
Теперь, если вы решите это уравнение, вы получите следующие параметры:
Диапазон:
Высота:
(vi = начальная скорость, тета i = начальный угол съемки относительно горизонтали)
А уравнение в (x, y)
для параболического пути будет
(v0 = начальная скорость, тета = угол обжига)
Программная часть
при условии следующих констант:
const g:Number = 9.81; //9.81 m/s, the grav const
Функция sin доступна как Math.sin
Функция питания доступна как Math.pow
. Это означает, что синусоидальный квадрат будет
Math.pow(Math.sin(theta), 2)
Вы могли бы написать функцию диапазона как
function projectileRange(vel:Number, angle:Number):Number {
var vsquare:Number = vel * vel;
var rv:Number = vsquare * Math.sin(2 * angle) / g;
return rv;
}
и функция высоты как
function projectileHeight(vel:Number, angle:Number):Number {
var vsquare:Number = vel * vel;
var rv:Number = vsquare * Math.pow(Math.sin(angle), 2) / (2 * g);
return rv;
}
и функция yPosition как
function yPosition(xPos:Number, vel:Number, angle:Number):Number {
return xPos * Math.tan(angle) - (g * xPos * xPos / (2 * vel * vel * Math.cos(angle) * Math.cos(angle)));
}
Обратите внимание, что углы в радианах
function toRadians(degrees:Number):void {
return degrees * Math.PI / 180;
}
Для получения дополнительной информации о движении снаряда, google it.