OpenGL八对称和内接正多边形逼近画圆法

//void cirpot(int x1, int y1, int x, int y) {
//    glBegin(GL_POINTS);
//    glVertex2i(x1 + x, y1 + y);
//    glVertex2i(x1 - x, y1 + y);
//    glVertex2i(x1 + x, y1 - y);
//    glVertex2i(x1 - x, y1 - y);
//
//    glVertex2i(x1 + y, y1 + x);
//    glVertex2i(x1 -y, y1 + x);
//    glVertex2i(x1 + y, y1 -x);
//    glVertex2i(x1 -y, y1 -x);
//    glEnd();
//    glFlush();
//    Sleep(100);
//}
//void circle_8(int x1, int y1, int r) {              //八对称  ok!!!!!!!!
//    int x, y;
//    for (x = 0; x <= sqrt(2) / 2 * r; x++) {
//        y = (int)sqrt(r * r - x * x);
//        cirpot(x1, y1,x,y);
//    }
//}

//void myDisplay(void) {
//    ///circle_8(300, 300,100);///八对称  ok!!!!!!!!
//    //内接正多边形逼近圆
//    int x0 = 250, y0 = 250, r = 100;
//    int i, n = 100;
//    float st;
//    glClear(GL_COLOR_BUFFER_BIT);
//    st = (360.0 / n) * (3.14 / 180);//角度转换为弧度
//    glColor3f(0.0f, 0.0f, 0.0f);
//    glBegin(GL_LINE_LOOP);
//    for (int i = 0; i < n; i++) {
//        glVertex2f(x0 + r * cos(i * st), y0 + r * sin(i * st));
//    }
//    glEnd();
//    glFlush();
//}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenGL是一种跨平台的图形库,可以用于创建2D和3D图形应用程序。要使用OpenGL绘制鼠标画圆,你需要以下步骤: 1. 初始化OpenGL环境:包括创建窗口、设置视口等。 2. 设置鼠标回调函数:用于获取鼠标的位置信息。 3. 在绘制循环中,根据鼠标位置和用户输入来计算圆的半径和中心点。 4. 使用OpenGL的绘制函数来绘制圆。 下面是一个简单的示例代码,演示了如何使用OpenGL绘制鼠标画圆: ```cpp #include <GL/glut.h> #include <cmath> int centerX, centerY; // 圆心坐标 int radius = 0; // 圆的半径 void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); // 设置颜色为白色 glBegin(GL_LINE_LOOP); for (int i = 0; i < 360; i++) { float angle = i * 3.14159 / 180; float x = centerX + radius * cos(angle); float y = centerY + radius * sin(angle); glVertex2f(x, y); } glEnd(); glFlush(); } void reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, width, height, 0); } void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { centerX = x; centerY = y; } } void motion(int x, int y) { radius = sqrt(pow(x - centerX, 2) + pow(y - centerY, 2)); glutPostRedisplay(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutCreateWindow("OpenGL Mouse Circle"); glClearColor(0.0, 0.0, 0.0, 1.0); // 设置背景颜色为黑色 glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutMotionFunc(motion); glutMainLoop(); return 0; } ``` 这段代码使用了OpenGL的固定函数管线来绘制圆形。在鼠标按下时,记录鼠标位置作为圆心;在鼠标移动时,根据鼠标位置计算半径,并重新绘制圆形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值