小组讨论

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

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

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

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

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

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. 想学习Android开发

    最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...

  2. JAVA 学习随笔 : JDK Enhancement Process JEP process

    是时候寻找一个学习JAVA的路径了 ---- JDK Enhancement Process Oracle发布了JDK增强提案与路线图进程,目的在于鼓励OpenJDK提交者贡献点子和扩展以改进Open ...

  3. Android应用开发中出现appcompat-v7错误

    博客Melon麦东=原创记录 经常很多朋友在Android应用开发过程中,遇到创建的好的Android工程,出现appcompat-v7错误,这因为Android从5.0开始,引入了此项目库,解决方案 ...

  4. 【原创】如何用Android Studio断点安卓自带Service或Bind类型的Service

    很久以来,我一直想找一种方法来断点调试安卓系统自身的Service,或者bind类型的Service,比如我想看WifiManager里面的getWifiApConfiguration函数是如何实现的 ...

  5. Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理

    Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Fr ...

  6. VMWare虚拟机NAT上网方法 亲测可用

    首先虚拟机的网卡要选择NAT 然后 在Virtual Network Editor中一定选上DHCP功能. 还要主机的服务必须开启.主机的VMnet8对应NAT模式,这个VMnet8的配置保持默认不要 ...

  7. quick-cocos2d-x :加入精灵背景

    最近几天都在学习 quick  找例子学习. 一直也没什么好的. 并且 还不会 lua .学习学习 突突突 官方文档上的打地鼠 都没了. 不知道为什么链接不好使. 好吧 那么今天就先做一个简单的 例子 ...

  8. GreenDao关系建表

    关系 在greenDAO,实体涉及使用一对一或一对多的关系.例如,如果要模拟一个1:greenDAOñ关系,你将有一个一对一和一对多的关系.但是,请注意,一对一和一对多的关系不是相互连接,所以你必须同 ...

  9. 第七章 Hibernate性能优化

    一对一关联 实体类关系 一对多 多对多 一对一 Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射.下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方 ...

  10. c++的多线程和多进程

    一.多进程和多线程对比 多进程:进程不止一个,开销比较大,通信方式比较复杂(可以用过管道.文件.消息队列进行通信),维护成本不高. 多线程:利用共享内存的方式进行指令的执行,开销比较低,但是维护起来比 ...