打印

点阵显示的基于原理和算法步骤

[复制链接]
3612|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szzghmcu|  楼主 | 2007-9-12 21:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

二维曲线的绘制工作一般可分为以下两步:第一是是依据某种算法计算出所绘图形的各点坐标值,并进行存储。这一步一般需要完成算法程序的编制;第二步是在所应用的点阵器件上根据算法程序所提供的点坐标,换算出点阵器件上显示点的位置,即显示缓冲区相应单元地址及其该单元的内数据的确定,从而在显示区域上组成所需要的显示图形。这一步需要完成绘点程序的编制。算法程序是通用的,绘点程序则需要根据应用点阵器件所配的显示控制的特性来编制。

曲线的绘制最终可以转化为直线的绘制,所以应先考虑绘制直线。绘制直线的算法种类较多,为了避免复杂的浮点运算,笔者采用整数数字微分分析法(INTEGER DDA)。先以(Xs,Ys)为起点,(XE,YE)为终点作直线,再使其斜率k=(YE-YS)/(XE-XS)。整数数字微分法的基本思想是回避了计算斜率k过程中的除法运算,应用ΔY=YE-YS和ΔX=XE-XS之间的关系,在保证ΔY≥0的条件下将斜率k分成四种情况,然后在每一种情况下用EER指明建立点位置与其实线的差距,以确定相应的作点规则,最后再将终点情况考虑进去。这四种情况为:

(1)k=0~1,此时有ΔY≥0,ΔX≥0,且ΔY≤ΔX关系成立。作点规则为:

在当前(X,Y)点处,若ERR<0,则在(X+1,Y)处缓点,且ERR=ERR+ΔY;

若ERR≥0,则在(X+1,Y+1)处绘点,且ERR=ERR+ΔY-ΔX。

然后将新的缓点坐标作为当前的(X,Y)点,而将所得到的ERR值作为该坐标点的偏差值。重复上述的工作直至X=XE为止。

(X,Y)的初始坐标值为(XS,YS),且ERR=0。

(2)k>1,此时有ΔY≥0,ΔX≥0,且ΔY>ΔX。作点规则为:

在当胶(X,Y)点处,若ERR<0,则在(X+1,Y+1)处缓点,且ERR=+ΔY-ΔX。

若ERR≥0,则在(X,Y+1)绘点,且ERR=ERR-ΔX。然后将新的绘点坐标作为当前(X,Y)点,而将所得到的ERR值作为该坐标点的偏差值,重复上述工作直至Y=YE为止。

(X,Y)的初始坐标值为(XS,YS),且ERR=0。

(3)当k=-1~0时,此时有ΔY≥0,ΔX<0,且 ΔY ≤ Δ 。作点规则为:

在当前(X,Y)点处,若ERR<0,则在(X-1,Y)处绘点,且ERR=ERR+ΔY;若ERR≥0,则在(X-1,Y)绘点,且ERR=ERR+ΔY+ΔY=ERR+ΔY- ΔX 。

然后将新的绘点坐标作为当前(X,Y)点,而所得的ERR值为该坐标点的偏差值,重复上述工作直至X=XE为止。

(X,Y)的初始坐标值为(Xs,Ys),且ERR=0。

(4)k<-1,有ΔY≥0,ΔX<0,且 ΔY > ΔX 。作点规则为:

在当前(X,Y)点处,若ERR<0,则在(X-1,Y+1)绘点,且ERR=ERR+ΔY+ΔY=ERR+ΔY- ΔX ;

若ERR≥0,则在(X,Y+1)绘点,且ERR=ERR+ΔY=ERR- ΔX 。

然后将新的绘点坐标作为当前的(X,Y)点,而所得到的ERR值为该点坐标点的偏差值,重复上述工作值至Y=YE为止。

(X,Y)点的初始坐标值为(XS,YS),且ERR=0。

应用MCS-51指令集编制整数数字微分法实用算法程序框图如图1所示。该程序可完成(0~255,0~255)范围内的任意直线绘制,且所作的直线在点阵液晶显示屏和微型打印机上显示的质量相当不错。



 

相关帖子

沙发
szzghmcu|  楼主 | 2007-9-13 20:17 | 只看该作者

今天就用这算法做的

今天折腾了一天终于把画点,画直线,画斜线,画曲线的做好了
前几天,我的CA240128液晶还不能显示呢,四处拜拂,找资料,看来还是要靠自己的

使用特权

评论回复
板凳
xwj| | 2007-9-13 21:24 | 只看该作者

画线的方法多了去了,建议LZ去看看《计算机图形学》

归根结底还是都是数学的知识

使用特权

评论回复
地板
lixun00| | 2007-9-13 21:37 | 只看该作者

据我所知还有逐点比较法和breshenhama直线法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

37

帖子

1

粉丝