@amaoaaaa
2017-10-19T15:35:31.000000Z
字数 1748
阅读 105
St: Wenya Wu 201530102016 WHU
- 本题旨在改变target的位置,寻求最佳初射角度使得cannon shell以最小初速度击中不同位置的target.设置不同target的位置是首要任务.
- 但不妨加入空气阻力以及空气密度随海拔高度的变化.
欧拉法的计算公式
在 中可变的量有常数空气密度
- 选定炮弹发射初始值(初始速度、发射角度等)及时间间隔Δt
无阻力的形式:
设置初始速度,分别做出发射角度为30°,45°,60°,无阻力情况下的轨迹- 确定落点位置(以位置作为循环语句的截至条件)
无阻力的情况 (代码)
设置阻力的形式(两种密度随高度变化的模式)
“击中target”的最初设想:
- 确定target的位置,例如设定为;
- 循环条件变为当前坐标值与target的位置差大于等于0.5m;
- 确保持发射初始速度不变,设置角度列表(30°至60°,每次增加1);
- 利用For循环嵌套while循环的方式计算出每个角度对应的轨迹距离target的最小值,组成列表delta,之后再建立列表theta记录每次For循环的角度,画出theta-delta图像,求出最小值对应的
(代码)但这个方案完全失败了!!!!
(一开始参考了丁冬冬学长求最远不同初射条件下最远射程的代码,基本上除了在while循环里面添加了距离的列表之外基本没有区别,但不知道为什么运行结果中,最小距离的列表始终只有一个固定值,有感觉while循环根本就没执行,但这个固定值又很奇怪,计算过也不像是循环没有执行之类的。。搞不定啊。。。
同样,考虑固定发射角度,改变初速度时又遇到问题,希望是用距离来选定,但。。。failed
更不用说要怎样达到最终的目的:再明确target的位置情况下找出最小出射速度和与之相应的发射角度了。。。设想是三层的循环嵌套,先筛选出每个角度对应的“可达目标速度”,之后再对比这些速度看哪个最小。。。事实是。。。循环语句都写不出来。。。想太多。。。)
以下是失败的结果图:
最终还是选择了手动改变出射速度和角度,以坐标x值小于target的x坐标为while循环条件,每次计算出最小距离,再对比。。。
设置target
在保持出射速度为50m/s的前提下:出射角度为°时距离target最近:
![]()
在保持出射角度为45°的前提下:出射速度为m/s时距离target最近:
本次作业完成的仍不理想,尤其没有达到最终目标:明确target位置的情况下确定最小出舍速度,但自己循环语句写的都有问题,更不用谈好几个循环的嵌套了。。。
唉。。。
真的菜鸟,就像我一样