1.基本公式
是初速度,t是时间,a是加速度,
是末速度
(1).
(2).
(3).
(4).
对应自由落体公式,即,
,
是重力加速度,
是平均速度
(1).
(2).
(3).
(4).
参考文章:
2.给定起始点
,目标点
,重力加速度
,初速度
,求发射角度
设水平距离为,垂直差为
初速度分解为水平初速度
,垂直速度为
抛物线分解成两个方向,水平移动量为匀速运动,
垂直方向移动为匀加速运动,
如果与
与
值不相同则公式为,
,即减掉
时
= 0
为了消除,把水平移动公式转成
,代入垂直方向移动公式
展开,
简化,,
根据三角恒等式,参考链接 https://www.shuxuele.com/algebra/trig-magic-hexagon.html
得,
再展开,
整理得,
得到一个以为末知数的方程,其中
最后用一元二次方程的公式解方程
如果 < 0,则方程无解,等于0两个解相同,大于0两个解
把a,b,c代入公式,
最后 ,
参考文章:https://zhuanlan.zhihu.com/p/99477136
3.给定起始点
,目标点
,重力加速度g,发射角度
,求初速度
求初速度与求发射角前部份公式相同,即
当Y=0时,
即是初速度
4.给定起始点P_0(x,y),目标点P_1(x,y),重力加速度g,最大高度,求初速度
desmos实现 https://www.desmos.com/calculator/vw2esabqru
实现步骤,假定初速度为0
,
根据公式,由于初速度为0,
,得到垂直初速度
再求水平初速度,分开为两段,根据公式
得到总时间 t = t1 + t2 ,将水平距离除以总时间,得到水平初速度
5.初速度与距离在3D空间里的里转换
V0 为初速度向量
水平分量 Vx = Vector3.ProjectOnPlane(V0, vector3.up)
垂直分量 Vy = Vector3.Project(V0, Vector3.up)
3D空间里的距离,起始点 startPos,目标点targetPos
startPos.y = targetPos.y = 0
水平距离 s = Vector3.Distance(startPos, targetPos)
6.更多资料
这里面Iron-Warrior写了一个例子,github上能下到
How to calculate force needed to jump towards target point?
Solve for Initial Velocity of a projectile given Angle, Gravity, and Initial and Final positions?
Find projectile speed given maximum height and range.