原以为液晶很容易,谁知调了以后才发现又是一片新领域。草草补点儿计算机图形学,
又耗两天才把画直线的程序给做出来了(愚钝),有感于参考书上都只一般讲了0≤k≤1情
况(窃以为高高在上是国产教材的特点),所以下面这个程序对似我一样钝的人来说应该
有点儿批判价值,就献丑了。
/********************************
适用:单片机,240*128液晶
作者:aifmlf
时间:12/23/2007
*********************************/
void Bresenhamline(int x0,int y0,int x1,int y1)
{
int x,y;
int dx,dy,e;
y0 = 127 - y0;
y1 = 127 - y1;
if(x0>x1) //保证沿x方向增长
{
x = x1;x1 = x0;x0 = x;
y = y1;y1 = y0;y0 = y;
}
x = x0;y = y0;
dx = x1 - x0;
dy = y1 - y0;
if(dy>=0)
{
if(dx>dy)
{
e = -dx;
while(x<=x1)
{
putpixel(x,127-y,1);
x++;
e += 2*dy;
if(e>0)
{
y++;
e = e - 2*dx;
}
}
}
else
{
e = -dy;
while(y<=y1)
{
putpixel(x,127-y,1);
y++;
e += 2*dx;
if(e>0)
{
x++;
e = e - 2*dy;
}
}
}
}
else
{
if(dx>abs(dy))
{
e = -dx;
while(x<=x1)
{
putpixel(x,127-y,1);
x++;
e += 2*dy;
if(e>0)
{
y--;
e = e - 2*dx;
}
}
}
else
{
e = -dy;
while(y>=y1)
{
putpixel(x,127-y,1);
y--;
e += 2*dx;
if(e>0)
{
x++;
e = e + 2*dy;
}
}
}
}
}
文章评论(0条评论)
登录后参与讨论