需要帮助来模拟基本导弹-目标模拟(算法-首选Qbasic)

问题描述 投票:0回答:1

我被赋予了模拟目标下的制导导弹的作业。

接受不同语言的答案。我只需要了解如何开发正确的算法即可。

问题定义:

目标在恒定速度为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

使用此代码我得到一些奇怪的结果:

http://prntscr.com/q8e0z1

http://prntscr.com/q8e1bn

我如何完成向x = 500的飞行时与导弹保持一定距离

我得到了一项作业,可以模拟目标之后的制导导弹。接受不同语言的答案。我只需要了解如何开发正确的算法即可。问题定义:A ...

algorithm simulation physics modeling qbasic
1个回答
-1
投票

您应提供有关目标预期弹道的更多信息。目标可以自由移动吗?还是会直线移动?如果从数学上讲不可能逃脱导弹,它应该尝试什么?最多x轴运动,或最多还活着?在计算目标运动时,目标是什么?

© www.soinside.com 2019 - 2024. All rights reserved.