冰球项目日志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项目日志查询流程
随机推荐
- SecureCRT:保存输出日志的方法
处理地址: http://blog.sina.com.cn/s/blog_64c1dd210101gzgz.html 或者: http://renchen.blog.51cto.com/4531967 ...
- linux hadoop安装
linux hadoop安装 本文介绍如何在Linux下安装伪分布式的hadoop开发环境. 在一开始想利用cgywin在 windows下在哪, 但是一直卡在ssh的安装上.所以最后换位虚拟机+ub ...
- 转:django 接收页面form的post数组
<input type="text" name="input[]"> <input type="text" name=&q ...
- Hibernate Spring
原理: 1. 读取并解析配置文件 2. 读取并解析映射信息,创建SessionFactory 3. 打开Sesssion 4. 创建事务 ...
- 查询Oracle正在执行和执行过的SQL语句
---正在执行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.s ...
- sqlite嵌入式数据库C语言基本操作(2)
:first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...
- 【转】解决Delphi WebBrowser 无法调用当前浏览器的版本
procedure TregedtIE.FormCreate(Sender: TObject); begin WriteAppNameToReg; WebBrowser1.Navi ...
- [MISC] JQUERY注意问题之ie8 post缓存
JQUERY 注意问题之 ie8 post缓存 1.设置AJAX,不存缓存 $.ajaxSetup ({ cache: false //关闭AJAX相应的缓存 }); 2.POST的URL加上随机参数 ...
- [ASM C/C++] C语言的main 函数
C语言有两种可能的运行环境 1. 独立(freestanding) 在独立环境中,C程序执行不需要操作系统的支持,因此只具有最小的链接库能力. 2. 宿主(hosted) 在宿主的环境中,C程序会在操 ...
- 在ubuntu 14.04上安装2.6的内核
1.到http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2这里下载最新的稳定版内核: 2.根据各自系统,安装如下软件:l b ...