抛物线公式

查看: 166|回复: 1
[复制链接]

nef 发表于 2018-7-2 15:33:09 | 显示全部楼层

欢迎访问本论坛,注册你的账号并登录,来与我们交流吧!

欢迎 登录 与我们交流!没有帐号?立即注册

x
不知道算法类应该放哪,就丢系统区吧

阅读此文需要:初中数学

在war3里面,你丢出一个抛物线技能,那么目标点的xy坐标是确定的,你和目标点的距离是确定的,然后你期望的抛物线高度,也应该是确定的(随便给一个常量)

有一个问题,就是施法者的z轴高度和目标点的z轴高度可能不一样,那么因为这个差,会导致抛物线公式的参数也不一样,抛物线最高顶点也不一样。

我们把抛物线放到一个2D平面上,X轴代表抛物线的行进路线在地面上的投影,Y轴表示投射物高度。

令:
h 等于期望的最大高度
d 等于施法者到目标点的距离
s 等于目标点的高度与施法者的高度差,正数表示目标点高于施法点,反之亦然

已知:
抛物线公式 y = ax^2 + bx + c

令:
施法者为原点

有:
0 = 0a + 0b + c

得:
c = 0

所以在我们的情形中,抛物线公式简化为:
y = ax^2 + bx

令:
目标点Pt = (d, s),因为目标点是最大距离,所以在新建立的坐标系中,距离(d)就是x轴的值,s是与原点的高度差,所以y轴值是s

又已知抛物线顶点x轴值为 -b / 2a

得:
顶点Pm = (-b / 2a, h),高度即y轴值

将两点带入抛物线公式,得:
TIM截图20180702152259.jpg

解方程得

TIM截图20180702152605.jpg

又因为投射物的行进方向是x轴正方向,因此取b1即可

这样我们就可以根据
抛物线高度
施法距离
地形高度差
得出了抛物线y=ax^2+bx的a和b两个值。

回到war3,xy轴计算方式和冲锋类似
计算高度时使用上面的公式,上面公式的x值即投射物已移动距离。

完。

例:
比如我们期望一个投射物的高度为1,距离为2

当高度差为0时,计算出
a = -1
b = 2


TIM截图20180702153027.jpg

当高度差为 +0.5时,计算出
a = -0.7285533905932737
b = 1.7071067811865475

TIM截图20180702153155.jpg

当高度差为-1时,计算出
a = -1.4571067811865475
b = 2.414213562373095

TIM截图20180702153257.jpg
回复

使用道具 举报

头衔不要那么长, 像我这样差不多就好了..

Cai 发表于 2018-7-7 00:35:08 | 显示全部楼层
反正我是不懂...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表