• c++中用opengl的gl函数在三维空间中绘制圆形和画球体


    c++中用opengl的gl函数在三维空间中绘制圆形和球体

    绘制圆形原理:
    画圆形的原理如下图,画一个圆形就相当于切蛋糕一样,将一个圆形切成很多个扇形,而扇形可以用三角形类似表示,所以我们可以将绘制圆形转化为绘制许多个三角形。

    在这里插入图片描述
    绘制圆形的代码如下:

    #define PI 3.1415926
    glColor3f(1.0, 0.0, 0.0);
    glLineWidth(2);
    glBegin(GL_TRIANGLES);
    for (int z = 0; z < 360; z++)
    {
    //这里的x轴是水平的,y轴是竖直的,绘制的是一个正对用户眼睛的圆形,类似上图的角度。
    						//绘制圆形相当于绘制许多三角形,半径*sin后面是弧度值,弧度值=角度值*PI/180,比如角度是1度,则弧度值=1*PI/180
    						//#define PI 3.1415926
    
    						glVertex3f(圆心x坐标, 圆心y坐标, 圆心z坐标);
    						glVertex3f(圆心x坐标+ 圆形的半径*(cos(z*PI / 180)), 圆心y坐标 + 圆形的半径*(sin(z*PI / 180)), 圆心z坐标 );
    						glVertex3f(圆心x坐标+ 圆形的半径*(cos((z + 1)*PI / 180)), 圆心y坐标 + 圆形的半径*(sin((z + 1)*PI / 180)), 圆心z坐标 );
    
    
    
    
    }
    glEnd();
    					
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    绘制球体原理:
    数学中的简单原理,一个球体相当于一个圆形绕y轴快速旋转,根据这个原理绘制球体相当于上面的那个圆绕y轴旋转360度,绕y轴旋转,x和z轴坐标变化,y不变
    绘制球体的代码如下:

    #define PI 3.1415926
    glColor3f(1.0, 0.0, 0.0);
    glLineWidth(2);
    glBegin(GL_TRIANGLES);
    for (int j = 0; j<360; j++) {
    		for (int z = 0; z < 360; z++)
    		{
    
    				
    
    				glVertex3f(球心x坐标,球心y坐标,球心z坐标);
    				glVertex3f(球心x坐标 + 半径*(cos(z*PI / 180))*(cos(j*PI / 180)), 球心y坐标 + 半径*(sin(z*PI / 180)), 球心z坐标+ 半径*(cos(z*PI / 180))*(sin(j*PI / 180)));
    				glVertex3f(球心x坐标 + 半径*(cos((z + 1)*PI / 180))*(cos(j*PI / 180)), 球心y坐标 + 半径*(sin((z + 1)*PI / 180)), 球心z坐标 + 半径*(cos((z + 1)*PI / 180))*(sin(j*PI / 180)));
    
    
    
    
    		}
    
    }
    glEnd();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    注意:需要将代码中文字部分代替成自己实际的量

  • 相关阅读:
    【C语言】经典的递归问题
    合宙Air724UG LuatOS-Air LVGL API控件-截屏(Screenshots)
    l14 IO模型
    进度条小程序
    3D 沙盒游戏之避障踩坑和实现之旅
    AQS详解
    ModaHub魔搭社区:星环科技向量数据库Hippo社区版来啦
    牛客小白月赛65
    Jtti:Ubuntu下如何创建XFS文件系统的LVM
    【Push Kit】模拟服务端发送消息至客户端,测试消息发送功能(华为推送服务)
  • 原文地址:https://blog.csdn.net/qq_45020911/article/details/127652293