天嵌 ARM开发社区

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

高手和亚瑟王请进,求教一函数。。。

[复制链接]
kira545699636 发表于 2010-5-29 11:03:11 | 显示全部楼层 |阅读模式
请哪位高手能给解释下 Glib_Line函数的如何实现的
特别是其中e存在的含义。。
主要就是e在里面起到的作用不太理解。。。
亚瑟王 发表于 2010-5-29 20:41:54 | 显示全部楼层
首先看附件中的两个图片,他们是相同的一个图片,图片2是图片1放大后的情况。

1、在LCD上画任意直线,就是对LCD的指定的像素点填充对应的颜色。
2、特别是斜线,由于LCD上没有半个像素点的说法,所以,当X或Y增加一个像素点之后,对应的Y或X要么增加一个像素点,要么保持原来的像素点不动。如附件的图所示。
3、举个例子:假设:x1=1,x2=320,y1=1,y2=2,那么画线后的情况是x轴的前面160个像素点,y轴的是1,在x轴的后面160个像素点,y轴是2。
4、算法说明:请参考图3。
图3中的a=(y+1)-(x+1)×(dy/dx),b=(x+1)×(dy/dx)-y。
我们只需要判断a和y的大小就行了。为了去掉小数点,使用dx×(b-a)=2×(xdy-ydx)+2dy-dx。此时,用相对位置来计算,x1=y1=0,然后,第二个点的坐标就是:d1=dx×(b-a)=2dy-dx,通过判断这个d1的大小就可以知道是图3中的绿点还是黄点了。这个d1就是程序中的变量e。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| kira545699636 发表于 2010-5-30 01:46:25 | 显示全部楼层
2# 亚瑟王
谢谢指教了。。我已经研究透了。。。
xyhyou 发表于 2010-5-30 11:31:06 | 显示全部楼层
亚瑟王讲解得很透彻:)
zr_714 发表于 2010-5-30 18:00:04 | 显示全部楼层
亚瑟王厉害 学习了 。。呵呵
sunyzz 发表于 2011-10-24 20:08:50 | 显示全部楼层
找到了啊!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-10-6 08:22 , Processed in 1.041055 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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