计算机图形小练习——画一个正方形,用4连通区域对其进行简单种子填充

计算机图形小练习——画一个正方形,用4连通区域对其进行简单种子填充


int m[200][200] = { 0 };
void seedfill4(int x, int y) {
 if ((x > 100 && x < 200) && (y > 100 && y < (200)) && m[x][y] == 0)
 {
 glBegin(GL_POINTS);
  glVertex2i(x, y);
  glEnd();
  glFlush();
  m[x][y] = 1;
  seedfill4(x + 1, y);//简单种子填充
  seedfill4(x, y + 1);
  seedfill4(x - 1, y);
  seedfill4(x, y - 1);
  }
}

void myDisplay(void)
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
//画个正方形
glVertex2i(200, 200);
 glVertex2i(100, 200);
 glVertex2i(100, 100);     
 glVertex2i(200, 100);

 glEnd();
 glFlush();

 glColor3f(1, 1, 0);     
 glPointSize(3.0);
 seedfill4(150,150);
 
 }

 void Initial()
{
glClearColor(1.0, 1.0, 1.0, 0.0);
 glMatrixMode(GL_PROJECTION);
 gluOrtho2D(0.0, 400, 0.0, 400.0);
 }

 int main(int argc, char* argv[])
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
 glutInitWindowPosition(100, 100);
 glutInitWindowSize(600, 600);
 glutCreateWindow("exercise");
 glutDisplayFunc(&myDisplay);
 Initial();
 glutMainLoop();
 return 0;
}


你可能感兴趣的:(计算机图形小练习——画一个正方形,用4连通区域对其进行简单种子填充)