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.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函数在三维空间中绘制圆形和画球体相关推荐
- matlab在二维平面和三维空间中绘制圆形
matlab在二维平面和三维空间中绘制圆形 二维平面绘制圆形 方法1: x = 10;y = 10;%圆心 r = 5; %半径 rectangle('Position',[x-r,y-r,2*r,2 ...
- Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小、自定义不同分组的气泡的色彩
Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小.自定义不同分组的气泡的色彩 目录
- Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小
Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小 目录
- np.meshgrid()函数 以及 三维空间中的坐标位置生成 以及 numpy.repeat()函数介绍
一.np.meshgrid()函数 1.np.meshgrid()介绍 X, Y = np.meshgrid(x, y) 代表的是将x中每一个数据和y中每一个数据组合生成很多点,然后将这些点的x坐标放 ...
- r roc函数_R语言中绘制ROC曲线
两种方法: 第一种,摘自别人的方法: ROC曲线,做分类时经常会用到的一种结果表现方法.诸如此类的工作,首选工具当然是R.在CRAN上搜了一下,找到一个叫ROCR的包.尽管这个包已经很久没更新了,但用 ...
- 三维空间中绘制点、线、面、UV贴图,万能的BufferGeometry(three.js实战4)
使用BufferGeometry 1. 序言 2. 如何使用BufferGeometry 2.1 创建BufferGeometry对象 2.2 向BufferGeometry对象添加属性 2.3 创建 ...
- PHP中绘制图像的一些函数总结
在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手 ...
- php画星球,PHP中绘制图像的一些函数总结
在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手 ...
- Android中用OpenGL ES Tracer分析绘制过程
Tracer for OpenGL ES(http://developer.android.com/tools/help/gltracer.html)是Android SDK中新增加的开发工具,可逐帧 ...
最新文章
- My view towards Machine Learning
- 常用的 Normalization 方法:BN、LN、IN、GN(附代码&链接)
- 【每日算法】桶排序算法
- linux监控nmon和analyser的使用
- linux openoffice centos,centos8 openoffice安装
- linux需要的GLIBCXX版本,Linux下GLIBCXX和GLIBC版本低造成的编译错误的解决方案
- Chrome中使用showModalDialog无法接收返回值,解决方案
- 机器学习,总是不得其法,问题出在哪里?
- 利用maven的resources、filter和profile实现不同环境使用不同配置文件
- 每日一题/015/tr(AB)=tr(BA)/反对称矩阵的充要条件/如果 AA‘=-A^2,那么是反对称矩阵
- [转载]MySQL数据库增长用户权限GRANT/INSERT INTO user VALUES/FLUSH
- 拳王虚拟项目公社:微店闲鱼怎样自动化卖虚拟商品,虚拟资源自动化收钱项目
- 【转】基于知识图谱的推荐系统(KGRS)综述
- 猎企如何制定合理的数据战略?(附数据迁移三大注意点)深度干货
- 【将门创投】商汤徐立:计算机视觉的完整链条,从成像到早期视觉再到识别理解...
- 转自国学大师--南怀谨先生
- 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV
- linux驱动-platform详解
- 推荐三个开发C程序的工具(适用各种场合)
- c++项目,制作GIF动态图