wang12zhedi 发表于 2012-10-10 09:52:57

LCD裸机画线程序解释,

/**************************************************************
LCD屏幕显示垂直翻转
// LCD display is flipped vertically
// But, think the algorithm by mathematics point.
//   3I2
//   4 I 1
//--+--   <-8 octantsmathematical cordinate
//   5 I 8
//   6I7
**************************************************************/
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//dx dy 都大于零,可以确定直线斜率大于零
                {
                        if(dx>=dy) // 1/8 octant斜率小于1
                        {
                                e=dy-dx/2;
                                while(x1<=x2)
                                {
                                        PutPixel(x1,y1,color);
                                        if(e>0)
                                        {y1+=1;e-=dx;}       
                                        x1+=1;
                                        e+=dy;
                                }
                        }
这是TQ2440开发板LCD裸机程序画直线程序的一部分,其中e=dy-dx/2;
怎么去理解呢,请大神?
还有无看了三个常用算法:
数值微分法(DDA)
中点画线法
Bresenham算法。那天嵌用的是Bresenham算法吗,不太像

embedsky_lhh 发表于 2012-10-10 18:31:11

从模型上看用的是Bresenham算法,楼主认为此代码与算法哪里是矛盾的?

wang12zhedi 发表于 2012-10-10 18:36:17

不是矛盾,而是   e=dy-dx/2;这句比理解,感觉不该是dx,该是dy,但是dy的话就e=0啦

wang12zhedi 发表于 2012-10-10 18:37:02

本帖最后由 wang12zhedi 于 2012-10-10 18:37 编辑

embedsky_lhh 发表于 2012-10-10 18:31 http://www.armbbs.net/static/image/common/back.gif
从模型上看用的是Bresenham算法,楼主认为此代码与算法哪里是矛盾的?

不是矛盾,而是   e=dy-dx/2;这句不理解,感觉不该是dx,该是dy,但是dy的话就e=0啦

embedsky_lhh 发表于 2012-10-13 09:52:19

wang12zhedi 发表于 2012-10-10 18:37 static/image/common/back.gif
不是矛盾,而是   e=dy-dx/2;这句不理解,感觉不该是dx,该是dy,但是dy的话就e=0啦

记得以前老师讲这的时候好像是e=2dy-dx,工作了之后没用过,也不确定了,连模型建立过程都不清晰了,你查下相关的资料应该就可以理解了,是dy也是可以的,只是换个空间而已,这没什么关系,相当于旋转90度之后再按你的思维建模,就是dy了。

rickyzw 发表于 2012-12-16 12:09:39

楼主你好!你有TQ2440裸机画线程序吗?能发我一份吗?我的QQ邮箱:707200399@qq.com!先谢谢啦!{:1_1:}
页: [1]
查看完整版本: LCD裸机画线程序解释,