1. 程式人生 > 程式設計 >OpenGL實現中點劃線法

OpenGL實現中點劃線法

本文例項為大家分享了OpenGL實現中點劃線法的具體程式碼,供大家參考,具體內容如下

#include "GL/glut.h"
#include "stdio.h"
#include "math.h"
 
int xs,ys,xe,ye;
 
void MidpointLine(int x0,int y0,int x1,int y1)
{
 if((x0 != x1) && (y0 != y1))
 {
 int a,b,deltal,delta2,d,x,y;
 a = y0 - y1;
 b = x1 - x0;
 d = 2 * a + b;
 deltal = 2 * a;
 delta2 = 2 * (a + b);
 x = x0;
 y = y0;
 glVertex2i(x,y);
 while(x < x1)
 {
  if(d < 0)
  {
  x++;
  y++;
  d += delta2;
  }
  else
  {
  x++;
  d += deltal;
  }
  glVertex2i(x,y);
 }
 }
 else
 {
 int min,d;
 if(x0 == x1)
 {
  int x = x0,y;
  y = (y0<=y1) ? y0 : y1;
  d = fabs((double)(y0 - y1));
  while (d <= 0)
  {
  glVertex2i(x,y);
  y++;
  d--;
  }
 }
 }
}
 
void lineSegment()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(0.0,0.0,0.0);
 glBegin(GL_POINTS);
 MidpointLine(xs,ye);
 glEnd();
 glFlush();
}
 
void main(int argc,char * argv[])
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 printf("輸入線段起始和終止點座標(範圍為0-500,0-500)");
 scanf("%d,%d,%d",&xs,&ys,&xe,&ye);
 glutInitWindowPosition(50,100);
 glutInitWindowSize(500,500);
 glutCreateWindow("中點劃線法");
 glClearColor(1.0,1.0,0.0);
 glMatrixMode(GL_PROJECTION);
 gluOrtho2D(0.0,500.0,500.0);
 glutDisplayFunc(lineSegment);
 glutMainLoop();
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。