OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5501|回复: 5

TFTLCD划线的函数问题

[复制链接]

13

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2013-6-21
在线时间
0 小时
发表于 2013-10-18 19:38:49 | 显示全部楼层 |阅读模式
在论坛里搜了,无果,哪位大神可以帮忙解释一下void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)
{
u16 t; 
int xerr=0,yerr=0,delta_x,delta_y,distance; 
int incx,incy,uRow,uCol; 
delta_x=x2-x1; //????×?±ê???? 
delta_y=y2-y1; 
uRow=x1; 
uCol=y1; 
if(delta_x>0)
incx=1; //?è??????·??ò 
else if(delta_x==0)incx=0;//???±?? 
else 
{incx=-1;delta_x=-delta_x;} 
if(delta_y>0)incy=1; 
else if(delta_y==0)incy=0;//?????? 
else{incy=-1;delta_y=-delta_y;} 
if( delta_x>delta_y)distance=delta_x; //?????ù±?????×?±ê?á 
else distance=delta_y; 
for(t=0;t<=distance+1;t++ )//???????? 
{  
LCD_DrawPoint(uRow,uCol);//???? 
xerr+=delta_x ; 
yerr+=delta_y ; 
if(xerr>distance) 
xerr-=distance; 
uRow+=incx; 
if(yerr>distance) 
yerr-=distance; 
uCol+=incy; 
}  
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-18 20:51:32 | 显示全部楼层
回复【楼主位】lilovehu521:
---------------------------------
我这也是抄来的,所以...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-10-1
在线时间
0 小时
发表于 2013-10-18 22:30:53 | 显示全部楼层
回复【楼主位】lilovehu521:
---------------------------------
看来楼主和我一样,喜欢寻根究底!我问过这个问题,答案在这
画圆算法解说处http://www.docin.com/p-246528188.html 
画线算法解说处http://wenku.baidu.com/view/75ddb8faaef8941ea76e05db.html

可以看我以前的疑问贴!
http://www.openedv.com/posts/list/22335.htm

画圆的算法,为什么是两点最接近圆上点的点呢?这个作者好像没细说,我补充下:
已知圆x^2+y^2=r^2;
显然圆心为原点,设圆与y轴的交点为j1(x1=0,y1=r),设圆与直线y=x的交点为j3(x3=r/√2,y3=r/√2)。
任取j1和j3圆弧间的一点j2(x2,y2),则该点的导数y'=-x2/y2(圆方程两边同时对x求导,再代入y2点),所以该点的切线为y-y2=(-x2/y2)(x-x2)。
所以,切线的下一点(x=x2+1时),点(x2+1,y=y2-(x2/y2))离圆上的点最近。
因为x2<y2,(点j2(x2,y2)在j1和j3之间,斜率y2/x2>1),所以与y最接近的整数为y2(x2/y2<1/2时),或者为y2-1(x2/y2>1/2时)。

说明:补充证明只有两点最接近圆的思路,源于一篇博客,过程是我敲的。
我自己本想直接证明x=x2+1时,找出y与圆上点纵坐标√(r^2-(x2+1)^2))的最接近的整数,无奈没推出来。
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-10-19 09:42:45 | 显示全部楼层
回复【楼主位】lilovehu521:
---------------------------------
在数学上不是两点确定一条直线么?两点坐标确定之后在屏幕上打点就是了,2楼的说法也很好。。。

楼主和我也是一样喜欢寻根问底的啊。。。
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-10-19 16:18:25 | 显示全部楼层
刚开始有时间经历 喜欢 追根问底,过个1-2年 就没经历了
1-1
回复 支持 反对

使用道具 举报

13

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2013-6-21
在线时间
0 小时
 楼主| 发表于 2013-10-19 17:35:38 | 显示全部楼层
回复【5楼】mygod:
---------------------------------
为啥
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 19:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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