为这个代码添加详细注释包括每个函数的作用#include iostream#includeglgluth#includecmathusing namespace std;void init glClearColor10 10 10 10; glMatrixModeGL_PROJECTION; glLoadIdentity; gluOrtho2D0 200 0 200;ty
#include
void init() { // 初始化窗口背景颜色为白色 glClearColor(1.0, 1.0, 1.0, 1.0); // 设置投影模式为正交投影 glMatrixMode(GL_PROJECTION); glLoadIdentity(); // 设置投影区域为 x 轴从 0 到 200,y 轴从 0 到 200 gluOrtho2D(0, 200, 0, 200); }
// 定义一个结构体,表示一个点的坐标 typedef struct point { int x; int y; } POINT;
// 使用 Bresenham 算法画圆 void BresenHam_Circle(POINT pH,int x,int y,int R) { int p; p = 3 - 2 * R; glColor3f(1.0, 0.0, 0.0); // 设置画笔颜色为红色 glBegin(GL_POINTS); // 开始画图 for (x; x <= y; x++) { // 绘制圆的 8 个对称点 glVertex2i(-x + pH.x, y + pH.y); glVertex2i(-x + pH.x, -y + pH.y); glVertex2i(x + pH.x, -y + pH.y); glVertex2i(x + pH.x, y + pH.y); glVertex2i(-y + pH.y, x + pH.x); glVertex2i(-y + pH.y, -x + pH.x); glVertex2i(y + pH.y, -x + pH.x); glVertex2i(y + pH.y, x + pH.x); if (p <= 0) { p = p + 4 * x + 6; } else { p = p + 4 * (x - y) + 10; y--; } } glEnd(); // 结束画图 glFlush(); // 刷新显示缓存 }
void display() { POINT pH; //定义圆心 pH = { 100,100 }; // 设置圆心坐标为 (100, 100) int R = 50; // 设置圆的半径为 50 int y = R; BresenHam_Circle(pH, 0, R, R); // 使用 Bresenham 算法画圆
}
int main(int argc, char** argv) { glutInit(&argc, argv); // 绘图初始化 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置窗口模式为单缓存 RGB 色 glutInitWindowPosition(100, 100); // 设置初始窗口位置 glutInitWindowSize(400, 400); // 设置窗口大小 glutCreateWindow("Lines"); // 设置窗口名称 init(); // 初始化窗口 glutDisplayFunc(display); // 设置窗口显示回调函数
glutMainLoop(); // 进入窗口事件循环
return 0;
原文地址: http://www.cveoy.top/t/topic/fbXr 著作权归作者所有。请勿转载和采集!