• 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

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

  • 相关阅读:
    hsql数据库(HyperSQL )(简单了解一下)
    Linux C编译器从零开发二
    [微前端实战]---040 子应用接入微前端-react15,react17
    【软件工程】四、编码 & 维护
    从浏览器输入url到页面加载(五)请求数据在网线中的故事
    项目管理之战略管理
    Mangopi MQ-R:T113-s3(五)Tina系统USB摄像头推流
    C# Solidworks二次开发:程序工具界面和选项相关API详解
    连接组学中的机器学习:从表征学习到模型拟合
    7-zip压缩包密码忘记了,怎么破解?
  • 原文地址:https://blog.csdn.net/qq_45020911/article/details/127652293