首页 > 解决方案 > 布雷森汉姆线编码不画线

问题描述

我尝试使用以下代码Bresenham 线图,但通过 OpenGL GLUT 项目。我已成功运行代码,但没有结果。我正在尝试绘制两点 p1(5,8) 和 P2(9,11) 之间的点。但似乎我的 for 循环有问题。

int x1,x2,y1,y2;
void drawline(int x0, int y0, int x1, int y1)
 {
int dx, dy, p;
int x,y;
dx=x1-x0;
dy=y1-y0;
//x=x0;
y=y0;
p=2*dy-dx;
for(x=x0; x<=x1; x++)
{
    if(p>=0)
    {

        y=y+1;
        p=p+2*dy-2*dx;
         glBegin(GL_POINTS);
         glVertex2i(x,y);
         glPointSize(45);
         glEnd();
    }
    else
    {

        p=p+2*dy;
        glBegin(GL_POINTS);
         glVertex2i(x,y);
          glPointSize(45);
          glEnd();
       y=y0;
    }
}

  void myDisplay()
  {
  drawline(x1, x2, y1, y2);
  glFlush();
  }

int main(int argc, char** argv) {

printf("Enter the value of x1 : ");
scanf("%f",&x1);
printf("Enter the value of y1 : ");
scanf("%f",&y1);
printf("Enter the value of x2 : ");
scanf("%f",&x2);
printf("Enter the value of y2 : ");
scanf("%f",&y2);

glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100,100);
glutCreateWindow ("bresenham Line Algo");
// myInit();
glutDisplayFunc(myDisplay);
glutMainLoop();
return 0;
}

标签: c++ccodeblocks

解决方案


我有两个我没有注意到的全局变量。谢谢大家的支持。


推荐阅读