冰球项目日志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项目日志查询流程
随机推荐
- mysql数据库的备份与恢复
假定我们的目标数据库是 test, 表是 user.假定mysql的用户名和密码均为 root. 备份与恢复所用的程序分别是mysql软件包提供的 mysqldump 命令和 mysql 命令.思想很 ...
- 如何写出优雅的Python
Looping over a range of numbers Bad: for i in [0,1,2,3,4,5]: print i**2 Good: for i in range(6): pri ...
- MKRCVCD-MKRCVCDSER.exe can't start in service
Logfile contents: 2016/11/23 02:15:09 NamePipeSer Log Start.2016/11/23 02:15:09 Start C:\Program Fil ...
- 【转】如何配置android的adb环境变量
转载地址:http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html 对于android的开发人员来说,首先要做的就是环境变量的配置. ...
- treeview 控件使用和数据绑定
一.TreeViewe 是由多个类来定义的,TreeView组件是由命名空间“System.Windows.Froms”中的“TreeView”类来定义的,而其中的节点(即Node),是由命名空间“S ...
- Cocosd-x的坐标系
OpenGL 坐标系 : 原点在屏幕左下角,x 轴向右,y 轴向上. UI坐标体系 : 原点在屏幕左上角,x 轴向右,y 轴向下. 屏幕坐标系: UI 世界坐标系: 也叫绝 ...
- 关于工程结合git的配置
我们通常把代码放到git sever中,(scm manager)中,上传,下载代码, 可是通常工程的代码改动会有图标提示,改动过的,或者新增的,那么需要在eclipse的工程中做一下简单配置 1,工 ...
- 利用wangEditor获取文章格式和内容
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- mac安装 Vitual box 虚拟机(window8.1)
首先到Oracle官网下载oracle VM VB,这是一个开源的免费项目,如果你想要了解更多的话甚至可以下载它的source code http://www.oracle.com/technetwo ...
- R语言解读一元线性回归模型
转载自:http://blog.fens.me/r-linear-regression/ 前言 在我们的日常生活中,存在大量的具有相关性的事件,比如大气压和海拔高度,海拔越高大气压强越小:人的身高和体 ...