求一算法公式 , 希望吧里的数学达人赐教 , 如图:
gamemaker吧
全部回复
仅看楼主
level 3
莲花血月
楼主
已知 : 发射点_x , 发射点_y , 目标点_x , 目标点_y
1.求 (obj_箭) 飞行的 x , y
2.求 (obj_箭) 不同位置的角度 image_angle
2019年08月04日 01点08分
1
level 3
莲花血月
楼主
补充:
箭的飞行是抛物线飞行
应该增加一个抛物高度变量 high
可以手动调整这个变量
2019年08月04日 01点08分
2
level 11
charalfrisk
先给你第一问,可能还可以化简(注意这里的high是相对于y1的!time的意思是效果总持续时间!)
tmp=
某时间点的x和y分别是tmp和f(tmp) f的定义看下面
(这公式有点长)
2019年08月04日 06点08分
3
level 11
charalfrisk
第二问(这里x代表时间!)
x=
y=
2019年08月04日 06点08分
4
莲花血月
f(x)=(a+b*x+c*x*x) 这个表达式本身有错误
2019年08月04日 22点08分
level 3
莲花血月
楼主
代入到对象里试了一下 y轴不运动
x1=x
y1=y
x2=object0.x
y2=object0.y
time=100
tmp=x1-(x1-x2)/time
a=(2*high*x2*y1-(x2*x2)*y1+2*x2*(y1*y1)-2*high*x1*y2+(x1*x1)*y2-2*x1*y1*y2)/((x1-x2)*(-2*high+x1+x2-2*y1))
b=-1*((2*(high+y1)*(y1-y2))/((x1-x2)*(-2*high+x1+x2-2*y1)))
c=-1*( (-y1+y2)/((x1-x2)*(-2*high+x1+x2-2*y1)) )
f=(a+b*x+c*x*x) ////---------这个有问题 f(x)=(a+b*x+c*x*x) 这个表达式本身有错误
x=tmp
y=f
2019年08月04日 22点08分
5
level 11
charalfrisk
sorry哈,那个第二问只有一个值,x那个作废,y的那个是斜率
搞混了
2019年08月05日 00点08分
6
level 11
charalfrisk
还有,f(x)=a+b*x+c*x*x是数学里的表达,不是让你直接放进代码里啊
这不是GM的表达式!
2019年08月05日 00点08分
7
吧务
level 13
q糖豆p
需要一个变量表示飞行进度,这里用jindu表示,范围是0到1。
x=发射x*(1-jindu)+目标x*jindu
y=发射y*(1-jindu)+目标y*jindu+4*high*jindu*(1-jindu)//这个4*high*jindu*(1-jindu)是个关于jindu的二次曲线
image_angle=point_direction(上一步的x,上一步的y,当前x,当前y)//注意根据素材方向可能需要添加补偿值
至于上一步的xy是想用内置的还是自己记录,以及修正相关BUG,应该在LZ能力范围内了。
2019年08月05日 01点08分
8
charalfrisk
6666666原来没必要求导吗
2019年08月05日 02点08分
charalfrisk
但是二次函数不应该需要3个变量控制吗
2019年08月05日 02点08分
q糖豆p
@charalfrisk
这个模型下,二次函数只是“补偿”那个升高值的,单看二次函数自身曲线是过原点的,也就是C=0。
2019年08月06日 02点08分
大四象
2019年08月08日 15点08分
level 15
开不了车
其实有个简单的办法,只要确定好目标点和用时,在绘制事件中设置精灵的变化高度、角度就可以了
2019年08月05日 05点08分
9
level 3
莲花血月
楼主
q糖豆p 提供的公式实验成功 , 果然是大神 , 佩服!!!
2019年08月06日 01点08分
10
1