void draw_line(unsigned char X2,unsigned char Y2,unsigned char X4,unsigned char Y4,unsigned char op) //op=0时画线,=1是擦线
{
/*****DDA数值微分算法*****/
int x;
unsigned char y;
if(X2!=X4) //画斜线
{
float dx,dy,y,k;
dx=X4-X2;dy=Y4-Y2;
k=dy/dx;y=Y2;
for(x=X2;x<X4;x++)
{
draw_pix((unsigned char)x, (unsigned char)(y+0.5),op);
y=y+k;
}
}
else //画下垂线
{
if(Y2>Y4)
{
for(y=Y4;y<Y2+1;y++)
draw_pix(X2,y,op);
}
else
{
for(y=Y2;y<Y4+1;y++)
draw_pix(X2,y,op);
}
}
本科生在公司实习,代码太大要压缩,不然塞不进去。
这个是直接从网上荡下来的,在8位单片机里占了1k多空间,比其他的函数大好多。想请问能怎么改进才小一点???
还有跟类型有关吗?那几个float影响的是时间复杂度还是空间复杂度?我试了int型,好像没变化。。。 |