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.1415926glVertex3f(圆心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();

绘制球体原理:
数学中的简单原理,一个球体相当于一个圆形绕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();

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

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

  1. matlab在二维平面和三维空间中绘制圆形

    matlab在二维平面和三维空间中绘制圆形 二维平面绘制圆形 方法1: x = 10;y = 10;%圆心 r = 5; %半径 rectangle('Position',[x-r,y-r,2*r,2 ...

  2. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小、自定义不同分组的气泡的色彩

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小.自定义不同分组的气泡的色彩 目录

  3. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小 目录

  4. np.meshgrid()函数 以及 三维空间中的坐标位置生成 以及 numpy.repeat()函数介绍

    一.np.meshgrid()函数 1.np.meshgrid()介绍 X, Y = np.meshgrid(x, y) 代表的是将x中每一个数据和y中每一个数据组合生成很多点,然后将这些点的x坐标放 ...

  5. r roc函数_R语言中绘制ROC曲线

    两种方法: 第一种,摘自别人的方法: ROC曲线,做分类时经常会用到的一种结果表现方法.诸如此类的工作,首选工具当然是R.在CRAN上搜了一下,找到一个叫ROCR的包.尽管这个包已经很久没更新了,但用 ...

  6. 三维空间中绘制点、线、面、UV贴图,万能的BufferGeometry(three.js实战4)

    使用BufferGeometry 1. 序言 2. 如何使用BufferGeometry 2.1 创建BufferGeometry对象 2.2 向BufferGeometry对象添加属性 2.3 创建 ...

  7. PHP中绘制图像的一些函数总结

    在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手 ...

  8. php画星球,PHP中绘制图像的一些函数总结

    在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手 ...

  9. Android中用OpenGL ES Tracer分析绘制过程

    Tracer for OpenGL ES(http://developer.android.com/tools/help/gltracer.html)是Android SDK中新增加的开发工具,可逐帧 ...

最新文章

  1. My view towards Machine Learning
  2. 常用的 Normalization 方法:BN、LN、IN、GN(附代码&链接)
  3. 【每日算法】桶排序算法
  4. linux监控nmon和analyser的使用
  5. linux openoffice centos,centos8 openoffice安装
  6. linux需要的GLIBCXX版本,Linux下GLIBCXX和GLIBC版本低造成的编译错误的解决方案
  7. Chrome中使用showModalDialog无法接收返回值,解决方案
  8. 机器学习,总是不得其法,问题出在哪里?
  9. 利用maven的resources、filter和profile实现不同环境使用不同配置文件
  10. 每日一题/015/tr(AB)=tr(BA)/反对称矩阵的充要条件/如果 AA‘=-A^2,那么是反对称矩阵
  11. [转载]MySQL数据库增长用户权限GRANT/INSERT INTO user VALUES/FLUSH
  12. 拳王虚拟项目公社:微店闲鱼怎样自动化卖虚拟商品,虚拟资源自动化收钱项目
  13. 【转】基于知识图谱的推荐系统(KGRS)综述
  14. 猎企如何制定合理的数据战略?(附数据迁移三大注意点)深度干货
  15. 【将门创投】商汤徐立:计算机视觉的完整链条,从成像到早期视觉再到识别理解...
  16. 转自国学大师--南怀谨先生
  17. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV
  18. linux驱动-platform详解
  19. 推荐三个开发C程序的工具(适用各种场合)
  20. c++项目,制作GIF动态图

热门文章

  1. 操作系统安全-第五章-安全策略与安全模型
  2. 解决斐波那契数列 (3)超生的母牛——斐波那契数列的变形
  3. Cell Trends综述精选:人工智能在生物医学领域的应用
  4. ADB连接不上问题解决
  5. 人性化Python模块, 珍爱生命,使用人性化模块。
  6. 一个不错的shell 脚本教程 入门级(转自脚本之家)
  7. 爬虫简单实例-爬取拼多多商品信息
  8. 基于IDEA 工程项目的git实操
  9. 企业实现客户忠诚的策略是什么?
  10. 基于SpringBoot+vue的民宿预定管理系统(源代码+数据库) 033