我被赋予了模拟目标下的制导导弹的作业。
接受不同语言的答案。我只需要了解如何开发正确的算法即可。
问题定义:
目标在恒定速度为V2的某些(x,y)坐标上被视为用户输入。
这时,以用户定义的V1恒定速度以(0,0)发射导弹击中目标。
目标必须通过x = 500才能逃脱导弹,并且还应与导弹保持安全距离。
开发一个程序来模拟此进度
如果我不考虑导弹的位置而让目标笔直地飞翔,那就可以正常工作。但是考虑到导弹的位置,它以一种奇怪的方式飞行。
[我编写了这段代码,但问题是,如果目标到达x = 499左右,它只会向上飞行而不会越过x = 500。
到目前为止,我的代码(Qbasic):
CLS SCREEN 12 WINDOW (-50, 600)-(600, -50) LINE (0, 0)-(500, 0) LINE (0, 500)-(0, 0) INPUT "Speed of Missile, v1=", v1 INPUT "Speed of target, v2=", v2 INPUT "Coordinate x of the plane, x=", x2 INPUT "Coordinate y of the plane, y=", y2 CIRCLE (x2, y2), 1 x = 500: y = y2 xx1 = 0: yy1 = 0 xx2 = x2: yy2 = y2 dlt = 0.05 x1 = 0 y1 = 0 draww: LINE (xx1, yy1)-(x1, y1), 3 LINE (xx2, yy2)-(x2, y2), 1 xx1 = x1: yy1 = y1: xx2 = x2: yy2 = y2 x1 = x1 + dlt * v1 * (xx2 - xx1) / SQR((xx2 - xx1) ^ 2 + (yy2 - yy1) ^ 2) y1 = y1 + dlt * v1 * (yy2 - yy1) / SQR((xx2 - xx1) ^ 2 + (yy2 - yy1) ^ 2) x2 = x2 + dlt * v2 * (x - xx2) / SQR((x - xx2) ^ 2 + (yy2 - yy1) ^ 2) y2 = y2 + dlt * v2 * (yy2 - yy1) / SQR((x - xx2) ^ 2 + (yy2 - yy1) ^ 2) Delay! = TIMER DO LOOP UNTIL TIMER - Delay! > 0 IF x2 >= x GOTO escaped IF x1 > x2 GOTO caught GOTO draww caught: PRINT "Target was hit": GOTO endd escaped: PRINT "Target escaped" endd: END
使用此代码我得到一些奇怪的结果:
我如何完成向x = 500的飞行时与导弹保持一定距离
我得到了一项作业,可以模拟目标之后的制导导弹。接受不同语言的答案。我只需要了解如何开发正确的算法即可。问题定义:A ...
您应提供有关目标预期弹道的更多信息。目标可以自由移动吗?还是会直线移动?如果从数学上讲不可能逃脱导弹,它应该尝试什么?最多x轴运动,或最多还活着?在计算目标运动时,目标是什么?