傻孩子,你的“怎样在点阵屏上绘图——基于LCD12864 ”上说的Bresenham算法为什么和书
傻孩子,你的“怎样在点阵屏上绘图——基于LCD12864 ”上说的Bresenham算法为什么和书上讲的算法不一样?能仔细讲一下吗?为什么x和y要和inc进行比较,只有在大于等于inc的情况下,当前点才能加1或减1?
附傻孩子的伪代码:
在(x1,y1)到(x2,y2)之间画一条直线
dx 是x到终点横坐标的距离
dy 是y到终点纵坐标的距离
ix 是dx的绝对值
iy 是dy的绝对值
inc是dx和dy中较大的那个
plot是是否要画一个点的标志位,boolean变量
plotx 是当前点所在的横坐标
ploty 是当前点所在的纵坐标
plotx = x1
ploty = y1
x = 0
y = 0
在 plotx,ploty画一个点——起点
for i = 0 to inc 增量1
x += ix
y += iy
plot = false
if x > inc then
plot = true
x -= inc
if dx > 0 then plotx ++
if dx < 0 then plotx --
if y > inc then
plot = true
y -= inc
if dy > 0 then ploty ++
if dy < 0 then ploty --
if plot == true then 在(plotx,ploty)处画点 Bresenham算法的原理就是固定一个坐标轴,每次增量1,然后去检查另外一个坐标的增量,
如果大于等于一个点,就给另外一个坐标加一,如果不够,就继续累加增量…… 回复【1楼】Gorgon Meducer 傻孩子
bresenham算法的原理就是固定一个坐标轴,每次增量1,然后去检查另外一个坐标的增量,
如果大于等于一个点,就给另外一个坐标加一,如果不够,就继续累加增量……
-----------------------------------------------------------------------
那为什么需要 x += ix; y += iy; 然后再去和inc比较呢?你给的伪代码中只是在x轴上增加x的增量,在y轴上增加y的增量,然后判断和inc的大小,这是什么意思,一时理解不了,只能请教了、! 前面的算法是一个同时适应两个轴的算法,你按照算法中的描述自己一步一步走一下就知道了。 技术贴,标记 还是不明白 to 【5楼】 redworlf 果子
看3楼的回复
页:
[1]