小组讨论

我们组编程主要分成三个模块,各自负责自己的编程与测试。

杨静梧:确定击球算法编程。输入:冰球位置,速度大小方向;输出:撞击时冰球中心位置。

曹迦勒:确定击球手速度,位置。输入:撞击时冰球中心位置,冰球速度;输出:击球手位置,速度方向。

李开旭:确定击球手轨迹。输入:击球手位置,速度大小方向;输出:轨迹方程。

黄竞超:整合三个模块的程序块。

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的更多相关文章

  1. 冰球项目日志2-yjw

    我们小组在12.31号进行了讨论,确定了基本的任务及分工,后面是元旦放假,大家没有做很多的东西,我也是把自己分工的部分方案想了下. 后面在1.3号,我们会再进行一次小组讨论,确定下最终的方案,然后进行 ...

  2. 冰球项目日志3-yjw

    小组讨论 今天大家讨论了之前各自想的方案的问题,基本确定了寻找击球点的方案,以及击球手运动轨迹规划的方案,这里我只是简单的说下我们的击球点的确定方案. 击球策略方案 方案分析 首先我们建立平面在直角坐 ...

  3. 冰球项目日志1-yjw

    第一次小组讨论结果 功能需求分析 通过已知输入:球位置速度,击球手位置速度.确定输出:击球手击球时速度,击球点位置,击球手轨迹. 功能分解 1 通过当前的球位置速度,判断是否会进入我方球门,以判断是否 ...

  4. 学习Coding-iOS开源项目日志(五)

    继续,接着前面第四篇<学习Coding-iOS开源项目日志(四)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目 ...

  5. 学习Coding-iOS开源项目日志(一)

    前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目.本篇开始会陆续更新本人对github上开源的一个很不错的项目的一点点学习积累.也就是,探究着别人写的源码,我学到了 ...

  6. 学习Coding-iOS开源项目日志(三)

    继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...

  7. 学习Coding-iOS开源项目日志(二)

    继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...

  8. 采用Spring AOP+Log4j记录项目日志

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6567672.html 项目日志记录是项目开发.运营必不可少的内容,有了它可以对系统有整体的把控,出现任何问题 ...

  9. jt项目日志查询流程

    jt项目日志查询流程

随机推荐

  1. CDC的StretchBlt函数载入位图时图片失真问题

    最近遇到加载的bmp图片出现失真问题,查找得知需要用SetStretchBltMode函数设置拉伸模式. 函数原型:int SetSTretchBltMode(HDC hdc, int iStretc ...

  2. Java Garbage Collection基础详解------Java 垃圾回收机制技术详解

    最近还是在找工作,在面试某移动互联网公司之前认为自己对Java的GC机制已经相当了解,其他面试官问的时候也不存在问题,直到那天该公司一个做搜索的面试官问了我GC的问题,具体就是:老年代使用的是哪中垃圾 ...

  3. Something about Linux

    Linux-一切皆文件 VMnet1   Host-Only网络下的虚拟交换机      VMnet8  虚拟NAT网络下的虚拟交换机 桥接模式 虚拟出同一网段下都能访问的服务器 ---------- ...

  4. UICollectionView 自定义组头组尾的XIB方法

    UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已.这里面不赘述. 1. UIC ...

  5. AC6102开发板USB3.0测试和使用说明

    AC6102开发板USB3.0测试和使用说明 概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3.该芯片性能强劲, ...

  6. win10 使用docker

    新手 win10 下使用docker 1:下载docker for win 2:查看docker使用文档 https://github.com/widuu/chinese_docker 3 : 下载镜 ...

  7. C#调用RAR压缩与解压

    public void RARsave(string rarPatch, string rarFiles,string  patch,string rarName)        {          ...

  8. js中arguments的用法

    了解这个对象之前先来认识一下javascript的一些功能: 其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载.Javascrip中国每个函数都会有一个Argume ...

  9. VS配置路径和宏

    http://blog.csdn.net/puttytree/article/details/7838419

  10. centos6安装svn1.9

    增加svn的源,vi /etc/yum.repos.d/wandisco-svn.repo [WandiscoSVN] name=Wandisco SVN Repo baseurl=http://op ...