




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2010-5-28对于科比投篮实验的轨迹分析上次做的科比投篮实验,关于轨迹部分我们直接是按照教程所给的函数来实现的,今天决定来对轨迹函数以及规定的确定做一下分析。首先先来研究球的运行轨迹是如何确定的。当时我们在假定球的轨迹之前我们用到了一段程序:Paint_Bmp(0, 0, 320, 240, kobeshot_320240); while(1) for(ii=0;ii16;ii+) Glib_Line(0,20*ii,320,20*ii,0xffff); Glib_Line(20*ii,0,20*ii,240,0xffff); if(ii=5|ii=10|ii=15) Glib_Line(0,20*ii,320,20*ii, (0x0011) | (0x3f5) | (0x00); Glib_Line(20*ii,0,20*ii,240, (0x0011) | (0x3f=0)if(dy = 0) / dy=0if(dx=dy) / 1/8 octante=dy-dx/2;while(x10)y1+=1;e-=dx;x1+=1;e+=dy;else/ 2/8 octante=dx-dy/2;while(y10)x1+=1;e-=dy;y1+=1;e+=dx;else / dy=dy) / 8/8 octante=dy-dx/2;while(x10)y1-=1;e-=dx;x1+=1;e+=dy;else/ 7/8 octante=dx-dy/2;while(y1=y2)PutPixel(x1,y1,color);if(e0)x1+=1;e-=dy;y1-=1;e+=dx;else /dx= 0) / dy=0if(dx=dy) / 4/8 octante=dy-dx/2;while(x1=x2)PutPixel(x1,y1,color);if(e0)y1+=1;e-=dx;x1-=1;e+=dy;else/ 3/8 octante=dx-dy/2;while(y10)x1-=1;e-=dy;y1+=1;e+=dx;else / dy=dy) / 5/8 octante=dy-dx/2;while(x1=x2)PutPixel(x1,y1,color);if(e0)y1-=1;e-=dx;x1-=1;e+=dy;else/ 6/8 octante=dx-dy/2;while(y1=y2)PutPixel(x1,y1,color);if(e0)x1-=1;e-=dy;y1-=1;e+=dx;函数看起来很复杂,仔细来理清思路,我们发现其实函数内部由很多选择语句组成,也就是很多选择语句,我们逐步分析每种情况。我们以Glib_Line(0,20*ii,320,20*ii,0xffff)为例,具体分析。假定ii=1;同样的先是来看看几个参数,x1,y1,x2,y2这几个可以才猜测估计是和横竖坐标有关的几个量,而color则应该是填充颜色。具体是不是这样我们后面接着分析。调用这个函数时,参数分别为:x1=0,y1=20,x2=320,y2=20;下面来看函数主体,一进函数先是:int dx,dy,e;dx=x2-x1; dy=y2-y1;这几条是对dx,dy,e的定义。此时dx=320,dy=0;然后就是个选择语句,判断dx=0还是dx=0,进入if语句后接着判断dy = 0还是dy=0,然后又是一个if语句判断dx=dy还是dx=dy;接着e=dy-dx/2=-160;然后是:while(x10)y1+=1;e-=dx;x1+=1;e+=dy;因为x1x2;满足条件进入循环,然后是一个PutPixel(x1,y1,color)的函数,我们go to一下看看他又是做什么的:void PutPixel(U32 x,U32 y, U32 c )if ( (x SCR_XSIZE_TFT) & (y SCR_YSIZE_TFT) )LCD_BUFFER(y)(x) = c;我们可以知道这个函数其实就是TFT LCD单个象素的显示数据输出。又因为刚才计算知道e0,直接跳过if语句,x1+,e=-160;while循环此时就不停的对y1=20,x1=0320的像素点赋值(屏幕右方为+x方向,屏幕下方为+y方向),其含义就是对第20行的320个像素点赋值,这就是一条横线,再根据先前的for(ii=0;ii=0,进入第一个if语句,dy = 0 , 进入if(dy = 0)语句,dxdy,进入else语句,e=dx-dy/2=-120;又因为y1=y2,进入while语句,y1+,e=-120;while循环此时就不停的对x1=20,y1=0240的像素点赋值, 其含义就是对第20列的240个像素点赋值,这就是一条列线,再根据先前的for(ii=0;ii16;ii+)我们就知道是对第0列,第20列,第40列第320列的240个像素点赋值,所以就是在320列的像素点范围内每隔20列像素点距离画条列线,共16条列线。这就实现了把整个屏幕分为16x12个方格的目的,这样我们就知道if(ii=5|ii=10|ii=15)语句所包含的内容就是让第5行第10行第15行,第5列第10列第15列线的颜色变为绿色。这个时候我们按照方块的位置就可以假定一条轨迹了。下面我们就分析一下教程的轨迹到底是怎么样的。先来轨迹的函数:While(1) for(ii=0;ii16;ii+) if(ii8) iii=60-8*ii; else iii=(ii-7)*10; Paint_Bmp(0, 0, 320, 240, kobeshot_320240); Paint_Bmp(205-10*ii,iii, 14, 14, ball_014014); Delay(500); 先是一个for循环的语句,实现ii=015的循环。我们发现ii是在Paint_Bmp函数里用到了,前几天分析了Paint_Bmp函数,知道205-10*ii,iii是确定图片的第一个像素点起始位置的。所以205-10*ii其实就是用来表示x方向的坐标,iii表示的是y方向的坐标。ii8是球在下降阶段,这时思想就是让球在ii=7时达到最高点。我们可以通过对球初始位置和篮筐位置粗略估计球的初始点和最终位置,并以此假定一条轨迹出来。Paint_Bmp(205-10*ii,iii, 14, 14, ball_014014); Delay(500);这两条语句就是让图片每延时一段时间更新一次篮球图片的位置。这里14x14篮球图片的第一个像素点位置变化即为篮球的运动轨迹,我们通过Pain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民法课件笔记
- 初源电子理论考试题及答案
- 表格考试题库及答案大全
- 民歌编花篮声部课件
- 新质生产力陕西行
- 金融业拥抱新质生产力
- 新质生产力:内涵与发展路径
- 广东:加快形成新质生产力路径
- 广东视角:新质生产力的实践与思考
- 端午节特色的活动策划方案
- (2025秋新版)苏教版科学三年级上册全册教案
- 2025年高一上学期英语开学第一课课件
- 2025年新教材道德与法治三年级上册第一单元《做学习的主人》教案设计
- 小学五年级上册生命.生态.安全全册教案
- 苏州大学医学部操作技能直接观察评估(DOPS)评分表
- FIDIC银皮书(中英文对照)
- 暂时进出口协议范本样本
- (烹饪)基本功教学教案
- 云南大学博士、硕士研究生学位论文写作规范
- 第11章-网络故障诊断及排除ppt课件(全)
- 初二家长会ppt通用PPT课件
评论
0/150
提交评论