liuke918 发表于 2010-5-12 22:40:10

LCD画线函数求教

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;
                                }
                        }

这是e=dy-dx/2;这个用意是什么?这个算法怎么理解,谢谢指教

liuke918 发表于 2010-5-14 23:59:09

麻烦高手指教下啊

muyihuaan 发表于 2010-5-15 17:07:06

Bresenham直线演算法的判断语句,有兴趣自己去看下Bresenham直线演算法

fans_run 发表于 2010-12-10 20:16:08

我看了这个演算法,对这个程序还是一头雾水

fans_run 发表于 2010-12-12 20:22:46

这个函数好像用到的是中点画线法,跟Bresenham直线演算法有点区别

塞外野叟 发表于 2011-12-16 16:28:55

e=dy-dx/2其实是由 e=2dy-dx演变而来,e是误差函数,只判断正负;若为正,则表明y的真实值更接近于yi+1;若为负,则接近于yi
注:
e=[(yi+1)-y]-yi]
页: [1]
查看完整版本: LCD画线函数求教