📄 画圆弧.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 + -