信息与电气工程学院
课程设计说明书
(2016/2017学年 第一学期)
课程名称: 嵌入式课程设计
题 目: 科比投篮
专业班级: 计算机1301
学生姓名: 王晓阳
学 号: 130210119
指导教师: 王彬丽
设r(ii=O;ii<16;ii++)
{
Glib_Line(O,2O*ii,32O,2O*ii,Oxffff);
Glib_Line(2O*ii,O,2O*ii,24O,Oxffff);
if(ii==5||ii==1O||ii==15)
{
Glib_Line(O,2O*ii,32O,2O*ii, (OxOO<<11) | (Ox3f<<5) | (OxOO));
Glib_Line(2O*ii,O,2O*ii,24O, (OxOO<<11) | (Ox3f<<5) | (OxOO));
}
}
}
这段程序的实验效果是在一张无球的科比投篮图片上划分了许多距离为20像素点的方格,方便我们来 大概确定篮球走过轨迹的坐标值。第一个 for 循环我们可以看出 ii 的值是由 O~15 也就是 16 个值。 这时通过想到效果是画距离为 20 像素点的方格子,我们可以知道整个屏幕长是 320 个像素点,宽是 240 个像素点距离,而以 20 个像素点距离的正方形边长是 20 像素点,这样在屏幕可以画 16x12 个 这样的方格。这里的 16 正是 for 循环里的 16 次循环。
接着来看下面的两条语句:
Glib_Line(0,20*ii,320,20*ii,0xffff);
Glib_Line(20*ii,0,20*ii,240,0xffff);
go to 一下看看函数:
void Glib_Line(int x1,int y1,int x2,int y2,int color)
{
int dx,dy,e;
dx=x2-x1;
dy=y2-y1;
if(dx>=0)
{
if(dy >= 0) // dy>=0
{
if(dx>=dy) // 1/8 octant
{
e=dy-dx/2;
while(x1<=x2)
{
PutPixel(x1,y1,color); if(e>0){y1+=1;e-=dx;} x1+=1;
e+=dy;}}
else
{
// 2/8 octant
e=dx-dy/2; while(y1<=y2) {
PutPixel(x1,y1,color); if(e>0){x1+=1;e-=dy;} y1+=1;
e+=dx;}}}
else {
// dy<0
dy=-dy;
// dy=abs(dy)
if(dx>=dy) // 8/8 octant
{
e=dy-dx/2;
while(x1<=x2)
{
PutPixel(x1,y1,color); if(e>0){y1-=1;e-=dx;} x1+=1;
e+=dy;} }
else
{
// 7/8 octant
e=dx-dy/2;
while(y1>=y2)
{
PutPixel(x1,y1,color);
if(e>0){x1+=1;e-=dy;} y1-=1;
e+=dx;}}}}
else //dx<0
嵌入式报告 来自淘豆网m.daumloan.com转载请标明出处.