冰球项目日志4-yjw
小组讨论
我们组编程主要分成三个模块,各自负责自己的编程与测试。
杨静梧:确定击球算法编程。输入:冰球位置,速度大小方向;输出:撞击时冰球中心位置。
曹迦勒:确定击球手速度,位置。输入:撞击时冰球中心位置,冰球速度;输出:击球手位置,速度方向。
李开旭:确定击球手轨迹。输入:击球手位置,速度大小方向;输出:轨迹方程。
黄竞超:整合三个模块的程序块。
hitpoint确定算法代码
/*输入:冰球(xa,ya);速度大小va;方向a。*/
/*输出:击球点坐标(x0,y0);*/
/*约束:桌面长宽分别为x3,y3;冰球半径r0;击球手半径r1;*/ #include <iostream>
#include <string>
#include <math.h>
#include<stdlib.h>
#include<time.h>
using namespace std; double xa, ya, va, a; //输入冰球信息 double xx1, yy1; //冰球轨迹与上下壁交点坐标
double xx2, yy2; //冰球轨迹与左壁交点坐标 double xhit, yhit; //击球点
double xhit1, yhit1; //轨迹与击球区域边界第一个交点
double xhit_sf, yhit_sf; //轨迹与算法选择线交点
double xrandom, yrandom; //随机确定点 double x3 = , y3 = ; //桌面大小
double x1 = , y11 = , x2 = , y2 = ; //击球区左边界,下边界,右边界,上边界
double y4 = , y5 = ; //球门范围 /*计算冰球轨迹与桌面壁的碰撞点*/
void root(double xa, double ya, double va, double a){
double t1, t2;
if (sin(a) > ) {
t1 = (y3 - ya) / (va*sin(a));
yy1 = y3;
}
else {
t1 = ya / (va*sin(a)); //确定第一次碰撞的事件t1
yy1 = ;
}
xx1 = xa + t1*va*cos(a); //与上下壁碰撞点(xx1,yy1)
t2 = xx1 / (va*cos(a));
yy2 = yy1 + t2*va*sin(a);
xx2 = ; //与左壁碰撞点(xx2,yy2)
} /*计算与击球区域边界第一个交点*/
void point1() {
double t;
double x22, y22;
t = (x2 - xa) / (va*cos(a));
y22 = ya + t*va*sin(a);
if (y22<y2&&y22>y11) {
xhit1 = x2;
yhit1 = y22;
}
else {
t = y11 / (va*sin(a));
x22 = xx1 + t*va*cos(a);
xhit1 = x22;
if (sin(a) > )
yhit1 = y2;
else
yhit1 = y11;
}
} /*判断是否会进球*/ bool hitin() {
if (yy2<y5&&yy2>y4)
return true;
else
return false;
} /*计算与算法选择线交点(xhit_sf,yhit_sf)*/
void point2() {
double t;
t = (x1 - xx1) / (va*cos(a));
xhit_sf = x1;
if (sin(a) > )
yhit_sf = y3 - va*sin(a)*t;
else
yhit_sf = va*sin(a)*t; //(xhit_sf,yhit_sf)
} /*产生随机击球点*/ void pointrandom(){
double num;
double t;
srand(time(NULL));
num = (rand() % )*0.01;
xrandom = x1 + num*(x2 - x1);
t = (xrandom - x1) / va*cos(a);
yrandom = yy2 - va*sin(a)*t;
} /*判断击球点*/
void hitpoint() {
bool sf;
point1();
if (xhit1 > x1) {
xhit = xhit1;
yhit = yhit1;
}
else {
sf = hitin();
if (sf) {
point2();
xhit = xhit_sf;
yhit = yhit_sf;
}
else {
pointrandom();
xhit = xrandom;
yhit = yrandom;
}
}
} void main() {
cout << "请输入冰球当前信息" << endl;
cout << "x=";
cin >> xa;
cout << "y=";
cin >> ya;
cout << "va=";
cin >> va;
cout << "a=";
cin >> a;
root(xa, ya, va, a);
hitpoint();
//cout << xx1 << yy1 << xx2 << yy2;
cout << "(xhit,yhit)=(" << xhit << ","<<yhit << ")";
}
代码测试
代码尚未测试,待测试之后再来补充。
冰球项目日志4-yjw的更多相关文章
- 冰球项目日志2-yjw
我们小组在12.31号进行了讨论,确定了基本的任务及分工,后面是元旦放假,大家没有做很多的东西,我也是把自己分工的部分方案想了下. 后面在1.3号,我们会再进行一次小组讨论,确定下最终的方案,然后进行 ...
- 冰球项目日志3-yjw
小组讨论 今天大家讨论了之前各自想的方案的问题,基本确定了寻找击球点的方案,以及击球手运动轨迹规划的方案,这里我只是简单的说下我们的击球点的确定方案. 击球策略方案 方案分析 首先我们建立平面在直角坐 ...
- 冰球项目日志1-yjw
第一次小组讨论结果 功能需求分析 通过已知输入:球位置速度,击球手位置速度.确定输出:击球手击球时速度,击球点位置,击球手轨迹. 功能分解 1 通过当前的球位置速度,判断是否会进入我方球门,以判断是否 ...
- 学习Coding-iOS开源项目日志(五)
继续,接着前面第四篇<学习Coding-iOS开源项目日志(四)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目 ...
- 学习Coding-iOS开源项目日志(一)
前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目.本篇开始会陆续更新本人对github上开源的一个很不错的项目的一点点学习积累.也就是,探究着别人写的源码,我学到了 ...
- 学习Coding-iOS开源项目日志(三)
继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...
- 学习Coding-iOS开源项目日志(二)
继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...
- 采用Spring AOP+Log4j记录项目日志
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6567672.html 项目日志记录是项目开发.运营必不可少的内容,有了它可以对系统有整体的把控,出现任何问题 ...
- jt项目日志查询流程
jt项目日志查询流程
随机推荐
- Java找不到或无法加载主类
今天用cmd运行一下java出现了找不到或无法加载主类 的问题 javac编译可以通过 java运行不了 原因: 看一下java版本 看一下javac版本: 编译和运行环境的版本不一样报错原来是用 ...
- 分布式入门之2:Quorum机制
1. 全写读1(write all, read one) 全写读1是最直观的副本控制规则.写时,只有全部副本写成功,才算是写成功.这样,读取时只需要从其中一个副本上读数据,就能保证正确性. 这种规则 ...
- IOS程序启动原理
1.Info.plist 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 常见属性(红色 ...
- 在DOM中搜索元素
方法 现代浏览器中使用XPath document.getElementById document/node.getElementsByTagName Limit search by parent e ...
- Mvc 模块化开发
在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...
- ASP.net如何保证EF操作类线程内唯一
说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实 ...
- 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文: ...
- 一个ubuntu phper的自我修养(workbench)
workbench从此和navicat的激活码说再见 workbench是一个免费易用功能强大的mysql图形化管理软件,navicat上用到的功能,workbench上都能找到. 一.workben ...
- python中文乱码问题
在学习python的时候,当我要print中文的时候,会出现以下提示: py = '你好,世界!'print py File "n2.py", line 1 SyntaxError ...
- 更新maven库
删除所在本地仓库的文件夹,例如: 然后,重新下载一个jar包,放到工程的文件夹,注意名字要不同,否则maven库不予更新,替换完成后,点击工程,maven,update project即可,再次查看M ...