天嵌 ARM开发社区

 找回密码
 注册
查看: 2667|回复: 5

LCD画线函数求教

[复制链接]
liuke918 发表于 2010-5-12 22:40:10 | 显示全部楼层 |阅读模式
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]-[y-yi]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 04:36 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表