⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 画圆弧.cpp

📁 本程序是利用中点画线法画圆程序
💻 CPP
字号:
#include <glut.h>

void DrawPoint(int m,int n)    //画点
{
    glBegin(GL_POINTS);
        glVertex2i(m, n);
		glVertex2i(n, m);
		glVertex2i(-m, n);
		glVertex2i(n, -m);
		glVertex2i(m, -n);
		glVertex2i(-n, m);
		glVertex2i(-m, -n);
		glVertex2i(-n, -m);
    glEnd();
	glFlush();
}

void MidpointCircle(int r){   //中点画线法
	int x,y;
	x=0,y=r;
	int e=1-r;
	DrawPoint(x,y);
	while(x<=y){
		if(e<0)  e+=2*x+3;
		else
		{e+=2*(x-y)+5;y--;}
		x++;
		DrawPoint(x,y);
	}

}
void Render(void){
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0f, 0.0f, 0.0f);
	glPointSize(2.0);
	
	MidpointCircle(0);
	MidpointCircle(20);
	MidpointCircle(30);
	MidpointCircle(40);
}
//该函数用于设置渲染状态
void SetupRC(void)
{
	glClearColor(0.0f, 1.0f, 0.0f,0.0f);
	//设置背景的颜色
}

//当窗口大小改变时由GLUT函数调用,保证所绘正方形的形状

void ChangeSize(GLsizei width, GLsizei Height)
{
	GLfloat aspectRatio;

	if (Height == 0) {
		Height = 1;
	}

	glViewport(0, 0, width, Height);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	aspectRatio = (GLfloat)width / (GLfloat) Height;

	if (width <= Height) {
		glOrtho(-200.0, 200.0, -200.0 / aspectRatio, 200.0 / aspectRatio, 1.0, -1.0);
	}
	else{
		glOrtho(-200.0 * aspectRatio, 200.0 * aspectRatio, -200.0, 200.0, 1.0, -1.0);
	}

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

//主程序入口
void main(void)
{ 
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(500,50);
	glutCreateWindow("       中点画圆法      ");
	glutDisplayFunc(Render);
	glutReshapeFunc(ChangeSize);
	SetupRC();
	glutMainLoop();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -