OpenGL實現中點劃線法
阿新 • • 發佈:2020-02-21
本文例項為大家分享了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(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。