基于Bresenahams的画直线算法(J2ME版)

大名鼎鼎的Bresenahams画线算法,现在改成了J2ME版,此算法没有任何乘除运算,只有加减运算,效率很高.

/**
  * @todo 基于Bresenahams的画直线算法
  * @param g Graphics类
  * @param x0 起点的x坐标
  * @param y0 起点的y坐标
  * @param x1 终点的x坐标
  * @param y1 终点的y坐标
    **/
 private void drawLine2(Graphics g,int x0,int y0,int x1,int y1)
 {
  int dx,dy,dx2,dy2,x_inc,y_inc,e,index;
  dx = x1 - x0; //deltas x
  dy = y1 - y0; //deltas y
  if(dx >= 0)
  {
   x_inc = 1;
  }
  else
  {
   x_inc = -1;
   dx = -dx;
  }
  if(dy >= 0)
  {
   y_inc = 1;
  }
  else
  {
   y_inc = -1;
   dy = -dy;
  }
  dx2 = dx << 1; //dx*2
  dy2 = dy << 1; //dy*2
  if(dx > dy)
  {
   e = dy2 - dx;
   for(index = 0;index <= dx;index++)
   {
    //draw point
    g.drawLine(x0,y0,x0,y0);
    //compute next point
    if (e >= 0)
          {
            e-=dx2;
            y0+=y_inc;
       }
    e+=dy2;
       x0+=x_inc;
   }
  }
  else
  {
     e = dx2 - dy;
     for (index=0; index <= dy; index++)
     {
      //draw point
      g.drawLine(x0,y0,x0,y0);
      //compute next point
         if (e >= 0)
         {
            e-=dy2;
            x0+=x_inc;
         }
         e+=dx2;
         y0+=y_inc;
     }
  }
 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值