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();
绘制球体原理:
数学中的简单原理,一个球体相当于一个圆形绕y轴快速旋转,根据这个原理绘制球体相当于上面的那个圆绕y轴旋转360度,绕y轴旋转,x和z轴坐标变化,y不变
绘制球体的代码如下:文章来源:https://www.toymoban.com/news/detail-502729.html
#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();
注意:需要将代码中文字部分代替成自己实际的量文章来源地址https://www.toymoban.com/news/detail-502729.html
到了这里,关于c++中用opengl的gl函数在三维空间中绘制圆形和画球体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!