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

    技术2022-05-11  147

    大名鼎鼎的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)