第一次小组讨论结果
功能需求分析
通过已知输入:球位置速度,击球手位置速度。确定输出:击球手击球时速度,击球点位置,击球手轨迹。
功能分解
1 通过当前的球位置速度,判断是否会进入我方球门,以判断是否需要进行防守;
2 通过判断的进球情况,确定需要防守时的击球方案(思考何时不考虑进球,只需要防守);
3 通过判断的进球情况,确定不需要防守时的进攻击球方案;
4 通过确定的击球点位置,确定击球手击球前的运动轨迹计算的算法;
5 将算法程序化,进行测试。
设计概要
首先整个流程分为算法设计,程序设计以及测试设计三个阶段:
算法设计阶段,1.1-1.3,小组四成员各自进行思考,分别对自己的想法进行描述(最好是框图描述),然后3号的时候再一起讨论,将想法综合,择优,确定最终的方案设计,并讨论确定好细节;
程序设计阶段,1.4-1.7,根据确定的算法方案,分工分模块进行程序设计,1.5号的时候集体讨论,解决遇到的问题;
测试设计阶段,1.8-1.9,根据设计的程序,编写可视化的测试程序,并输出测试程序的测试结果。
团队分工
算法设计阶段:
黄竞超:确定球以当前速度会不会进入我方球门以及是否需要防守的算法设计。输入是当前的球位置,速度;约束是球台壁的范围;输出是对是否防守的布尔判断,球的碰撞方式的标识符(比如,球会碰撞到那些面等等,以便于后续的确定防守策略)。
李开旭:确定击球手从当前位置到击球点的运动的轨迹规划,即确定一个算法或者公式能够表达出击球手的轨迹。输入是击球手的当前位置速度,击球点的位置,击球手在击球点的速度;约束是当前到碰撞的时间差t;输出是击球手的轨迹表达式。
杨静梧,曹迦勒:确定计算击球点位置的算法的设计。输入是球当前位置速度,球碰撞类型;输出是击球点位置,击球点处击球手的速度,当前到击球点的时间间隔。
程序设计以及测试设计阶段:
根据大家算法的分工,以及确定好的接口来编写程序。
设计注意事项
1 需要防守时可以考虑必要时,只防守,不进攻,具体的分界需要自己确定;
2 确定击球手轨迹时,要考虑到实际的电机速度限制,不能无限下去;
3 判断需不需要防守的时候,最好输出一个标识符,标志球属于哪种碰撞方式;
4 暂不考虑球在反弹过程中会碰撞到我方击球手的情况;
5 暂时不考虑球击打之前碰撞墙壁超过三次的情况。
感受
作为小组负责人,感觉压力还是很大的,我们小组整体没有特别厉害的大神,所以很多都需要自己一点点琢磨,这个过程比较累,但是坚持下来感觉还是学会了不少东西,继续加油吧。