level 1
在做一个游戏的AI时. 遇到一个问题..
做的是一个自动防卫武器的AI, 要求对发现的目标发射炮弹拦截目标..
平面游戏只考虑x,y轴
具体发现的过程省略,
已知:
目标的坐标(ax,ay) ,正在向方向 af (与x轴正方向的夹角,弧度制0~2π), 以 va 的速度前进
自动防卫武器 : 坐标(bx,by), 当前面向角度 bf , 将以角速度 r (弧度/秒)的速度转到拦截方向后发射速度为 vb 的炮弹, 命中目标.
求该自动防卫武器应当转动的弧度 (逆时针转动为正)
想了好长时间想不出来..
2010年12月21日 14点12分
1
level 6
楼主我有个解法,不过我没具体算,你可以算一下
首先要能成功拦截,自卫武器的导弹要与目标同时到达目标运动轨迹(直线)上的某点C,假设目标原位置A,自卫武器位置B,设AB=b,AC=a,BC=c,自卫武器转过角度cf
拦截用总时间t=cf/r+c/vb
a=vat,b=sqrt((ax-bx)^2+(ay-by)^2)
角CAB=af+arctan((ya-yb)/(xa-xb))
余弦定理 c^2=a^2+b^2-2*a*b*cos(角CAB)
正玄定律 c/sin(角CAB)=b/sin(PI-角CAB-arctan((ya-yb)/(xa-xb))-cf-bf)
里面t,cf,a,b,c,角cab是未知数
6个未知数6条方程应该是有解,不过貌似很麻烦。。
2010年12月21日 15点12分
3
level 6
我没去检验余弦定理和正弦定理那两条式子有没有重叠,不过应该是没有。最后整个式子应该是化为一条之汉cf一个未知数的方程,而cf除了位于多项式之中还位于一个正弦函数之中,应该是常规方法无法解的
2010年12月21日 15点12分
4
level 6
可能我这个方法太笨了。有空我在想下有没有其他办法。会不会有其他办法,不去计算这个角度一样可以做到拦截,毕竟这是编程,可能可以通过某些方法进行轨道修正。能不能让拦截弹的方向始终向着目标,但是速度比目标快,这样理论上应该是能够拦截的吧。
2010年12月21日 15点12分
5
level 1
总是有类似 y=arctan(y+a)这样的情况,要怎么提取出来呀
2010年12月22日 01点12分
6
level 6
回复:6楼
这条方程是超越方程,无法用常规方法解的,只能是通过计算机模拟迭代,用牛顿法迭代
2010年12月22日 04点12分
7
level 6
但是如果是拦截导弹始终对准目标飞,这样编程起来估计简单点,游戏看起来也不会很突兀的,红色警戒里面那些爱国者飞弹拦截导弹的时候就是向着导弹飞的
2010年12月22日 04点12分
8
level 1
如果有直接算的方法就好了..
我得出的几个都是需要每个小时间间隔来判断.. 0.02秒一次.. 效率很低呀..
2010年12月22日 11点12分
10