?? 畫圓弧.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 + -