1、int twoDy=2*dy,twoDyMinusDx=2*dy-2*dx;int x,y;if (x1xEnd)x=xEnd;y=yEnd;xEnd=x1;elsex=x1;y=y1;draw_pixel(x,y);while(xx+;if(p0)p+=twoDy;elsey+;p+=twoDyMinusDx;draw_pixel(x,y);void display()glClear(GL_COLOR_BUFFER_BIT);Bresenham(0,0,400,400);glFlush();void myinit()glClearColor(0.8,1.0,1.0,1.0);glColor3
2、f(0.0,0.0,1.0);glPointSize(1.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,500.0,0.0,500.0);void main(int argc,char *argv )glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(500,500);glutInitWindowPosition(200.0,200.0);glutCreateWindow(CG_test_Bresenha
3、m_Line example);glutDisplayFunc(display);myinit();glutMainLoop();二、 中点法绘制椭圆inline int round(const float a)return int (a+0.5);void setPixel(GLint xCoord,GLint yCoord)glVertex2i(xCoord,yCoord);void ellipseMidpoint(int xCenter,int yCenter,int Rx,int Ry)int Rx2=Rx*Rx;int Ry2=Ry*Ry;int twoRx2=2*Rx2;int t
4、woRy2=2*Ry2;int p;int x=0;int y=Ry;int px=0;int py=twoRx2*y;void ellipsePlotPoints(int,int,int,int);ellipsePlotPoints(xCenter,yCenter,x,y);p=round(Ry2-(Rx2*Ry)+(0.25*Rx2);while(px0)y-;py-=twoRx2;if(pp+=Rx2-py;x+;px+=twoRy2;p+=Rx2-py+px;void ellipsePlotPoints(int xCenter,int yCenter,int x,int y)setPi
5、xel(xCenter+x,yCenter+y);setPixel(xCenter-x,yCenter+y);setPixel(xCenter+x,yCenter-y);setPixel(xCenter-x,yCenter-y);ellipseMidpoint(200,200,50,30);gluOrtho2D(0.0,300.0,0.0,300.0);glutInitWindowSize(300,300);circleMId example三、 抛物线void ellipseMidpoint(int xCenter,int yCenter,int a,int b)int x=xCenter;
6、int y=yCenter;int px=0,py=0;ellipsePlotPoints(xCenter,yCenter,px,py);p=yCenter+a*(x+1-xCenter)*(x+1-xCenter)+b*(x+1-xCenter)-y-0.5;dox=x+1;y=y;p=yCenter+a*(x+1-xCenter)*(x+1-xCenter)+b*(x+1-xCenter)-y-0.5;y=y-1;px=x-xCenter;py=y-yCenter;ellipsePlotPoints(xCenter,yCenter,px,py);while(pxpy);for(;)x=x-
7、1;y=y+1;p=yCenter+a*(x+0.5-xCenter)*(x+0.5-xCenter)+b*(x+0.5-xCenter)-y-1;x=x;ellipseMidpoint(150,150,1,0);四、 基本图元输出void Polygon(int*p1,int*p2,int*p3,int*p4,int*p5,int*p6)glBegin(GL_POLYGON); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6);void Triangles(int*p1,int
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1