我已经开始为游戏服务器开发单位轨迹,现在我正试图在给定时间检索单位的位置。当轨迹只是一条直线时很容易,但是当单位追逐另一个单位时它会复杂得多。
我已完成flash app来说明问题。黑色轨迹适用于沿单一方向行进的单位。蓝色追逐黑色和红色追逐蓝色。我想要的是预先计算蓝色和红色的整个轨迹,以便能够在恒定的时间内找回它们的位置。
有可能吗?谢谢你的帮助!!
答案 0 :(得分:2)
这是Carl E. Mungan撰写的一篇论文A classic chase problem solved from a physics perspective,它解决了一个特定版本,其中追踪者最初垂直于被追踪物体的轨迹。我相信这是解决方案的一个非必要因素,因为垂直性会沿着轨迹的其余部分消失。
它是一个自治微分方程系统,在某种意义上说,时间没有明确地出现在方程的系数或项中。这支持了论文中给出的解决方案系列足够通用以提供非垂直初始条件的想法。
本文提供了进一步的链接和参考,以及一个有用的搜索术语,“追求的曲线”。
让我们说明一个略微不同,稍微更一般的初始条件,而不是蒙山的。假设追逐对象(“船”)最初位于原点并以恒定速度V向上行进正y轴(x = 0)。追逐对象(“鱼雷”)最初位于(x0,y0)虽然直接在“船”上进行瞬时重新定向,但也以一定的速度行进v。
x0为零的特殊情况导致线性追踪曲线,即正面碰撞或尾随追踪,因为y0为正或负。否则,通过在y轴上的反射,可以假设x0> 0,而不失一般性。因此,x坐标的合理幂将被明确定义。
假设我们的直接目的是速度V,v不相等,因此r = V / v的比率不是1.以下是类似于Mungan方程的“鱼雷”曲线的封闭形式解(1)( 10):
(1+r) (1-r)
[ (x/H) (x/H) ]
(y/H) = (1/2) [ ----- - ----- ] + C (1)
[ (1+r) (1-r) ]
其中常数H,C可由初始条件确定。
应用鱼雷最初移向船舶原点位置的条件,我们采用(1)中x的导数并从两侧取消1 / H因子:
r -r
dy/dx = (1/2) [ (x/H) - (x/H) ] (2)
现在将曲线在初始点(x0,y0)的斜率dy / dx与通过原点的曲线斜率dy / dx等同起来:
r -r
(x0/H) - (x0/H) = 2y0/x0 = K (3)
这相当于正的二次方程式 B =(x0 / H)^ r:
B^2 - K*B - 1 = 0 (4)
即B = [K + sqrt(K ^ 2 + 4)] / 2(但如果K <0则使用the alternative form以避免取消错误),这允许根据我们对x0的知识确定H和r:
H = x0/(B^(1/r)) (5)
知道H使得通过在那里取代初始点(x0,y0)来确定(1)中的加法常数C是一件简单的事情。
棘手的部分是确定“鱼雷”轨迹上的哪个点对应于给定时间t&gt;这个问题的反转很简单地解决了。给定轨迹上的一个点,使用导数公式(2)找到该点处的切线,并从该线的y轴截距b(即从当前“船舶”位置)推导出时间t:
t = b/V (6)
因此确定“鱼雷”位于给定时间t的位置(x(t),y(t))> 0本质上是一个寻根练习。可以容易地在两个x坐标x1和x2之间包含期望的x(t),其对应于时间t1和t2,使得t1
答案 1 :(得分:1)
我可以为您设置问题,但不能解决问题。
黑色曲线以恒定速度v0和直线移动。
蓝色曲线以黑色方向以恒定速度v1移动。
为简单起见,选择坐标,以便在时间t = 0时,黑色曲线从(x = 0,y = 0)开始,并沿x方向移动。
因此,在时间t> = 0时,黑色曲线的位置为(v0 t,0)。
问题陈述
目标是在给定初始位置(x(t = 0),y(t = 0))的情况下找到时间t> = 0的蓝色曲线的x,y。运动的微分方程是
dx / dt = v1(v0 t - x)/ a(t)
dy / dt = v1( - y)/ a(t)
其中a(t)= sqrt((v0 t - x)^ 2 +(y ^ 2))是时间t时蓝色和黑色之间的距离。
这是一个由两个非线性耦合微分方程组成的系统。似乎没有完整的分析解决方案。 Wolfram Alpha放弃而不尝试输入
D[y[t],t] = -y[t] / sqrt[(t-x[t])^2 + y[t]^2], D[x[t],t] = (t-x[t]) / sqrt[(t-x[t])^2 + y[t]^2]
您可以尝试询问math.stackexchange。祝你好运!