DDA画线算法

假设给定两个点 A(x1,y1) , B(x2,y2) ,用DDA实现画直线AB的算法如下

dx=x2-x1; dy=y2-y1;  斜率k ;(x,y) 为需要画的点坐标,初始时(x,y)=(x1,y1);

1)  (dx!=0&&dy!=0) ,即AB为斜线

    1.1  abs(dx)>=abs(dy), 此时以x方向为步长;

               for( i=0; i<abs(dx); i++)//循环,移动dx步

                  k=dy/abs(dx);  y=y+k; //这里y和k应该是浮点型,渲染点的时候再转成整型

                  if x>0 x++;  else  x--;//即dx的符号决定了像素移动的方向

                  渲染点(x,y)

     1.2  以y方向为步长,方法与 1.1中类似;

2)  dx==0;此时AB为竖直线,所以x无需变化;

          循环abs(dy) 次:

              if (dy>0) y++; else y--

              渲染点(x,y)

3)  dy==0;与2)中类似.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值