• 大小: 252KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签: openGL  球体  

资源简介

绘制若干OpenGL基本体素(三角形、三角形带、四边形、四边形带)构成的球体,注意球体绘制与球体划分的区别。  可以控制改变球的数量和球的体积,来改变基本体素的数量以及顶点的数量。  可以通过改变glPolygonMode,切换是否填充所绘制的基本体素。  利用函数glutGet(GLUT_ELAPSED_TIME)(returns the time in milliseconds since glutInit or the first invocation of the function)统计绘制时间

资源截图

代码片段和文件信息

#include 
#include
#include
#include
#include 
#include 

#define PI 3.1415926
#define GLfloat float
#define GLdouble double
#define GLint int

double c=PI/180.0;
double radius=100.0;//球半径
int w=500.0h=500.0;//窗口的宽和高
int angleX=10angleY=10;//角度
double oldcenterxoldcenterycenterxcenterycenterz;
int num=1;
int fill_mode=GL_LINE;//显示面只用线表示
double step=10;
long timeStart=0;
time_t t;
int style=GL_QUAD_STRIP;//四边形带
int color;
color=1;
float thetaphirphithetarphir20;
float xyz;
double c80;
int i;

void drawSphere(int centerxint centeryint centerz){

//选择当前操作的矩阵。GL_MODELVIEW为模型视图矩阵
glMatrixMode(GL_MODELVIEW);
    //将当前矩阵设置为4乘4单位矩阵
glLoadIdentity();
    //平移变换
glTranslated(centerxcenterycenterz);

    //旋转变换从(0,0,0)到(0,1,0)逆时针方向旋转45°
glRotated(45010);
glRotated(angleY100);
glRotated(angleX001);


c80=c*80;

//定义视口,前两个0为左下角坐标,w和h为视口的宽度和高度
glViewport(00(GLdouble)w(GLdouble)h);

for(phi=-90;phi<=90;phi+=step){
   phir   = c*phi;
   phir20 = c*(phi+20);

   //glPolygonMode函数用于控制多边形的显示方式。
    glPolygonMode(GL_FRONTfill_mode);//GL_FRONT表示显示模式将适用于物体的前向面(也就是物体能看到的面)
     glPolygonMode(GL_BACKfill_mode);//GL_FILL表示显示面(GL_POINT表示只显示顶点GL_LINE表示显示线段)
        
   //设置CCW方向为“正面”,
   glFrontFace(GL_CCW);
   glBegin(style);
   for(theta=-180;theta<=180;theta+=step){
    thetar = c*theta;
    x=radius*sin(thetar)*cos(phir);
    y=radius*cos(thetar)*cos(phir);
    z=radius*sin(phir);
    //随机分配颜色。
    if(color)
     glColor3f((rand()%101*1.0)/100(rand()%101*1.0)/100(rand()%101*1.0)/100);
    glVertex3d(xyz);
    x=radius*sin(thetar)*cos(phir20);
    y=radius*cos(thetar)*cos(phir20);
    z=radius*sin(phir20);
    glVertex3d(xyz);
   }
   glEnd();
}


if(style==GL_TRIANGLES || style==GL_QUADS){
  

    for(phi=-90;phi<=90;phi+=step){
    phir   = c*phi;
   
    glPolygonMode(GL_FRONTfill_mode);
    glPolygonMode(GL_BACKfill_mode);
    glFrontFace(GL_CCW);
    glBegin(GL_POLYGON);
    for(theta=-180;theta<=180;theta+=step){
     thetar = c*theta;
     x=radius*sin(thetar)*cos(phir);
     y=radius*cos(thetar)*cos(phir);
     z=radius*sin(phir);
     //随机分配颜色。
     if(color)
      glColor3f((rand()%101*1.0)/100(rand()%101*1.0)/100(rand()%101*1.0)/100);
     glVertex3d(xyz);
    }
    glEnd();

    }
}

glPolygonMode(GL_FRONTfill_mode);
glPolygonMode(GL_BACKfill_mode);
glFrontFace(GL_CCW);
glBegin(GL_TRIANGLE_FAN);//画扇形
glVertex3d(00radius);
z = radius*sin(c80);
for(theta=-180;theta<=180;theta+=step){
   thetar = c*theta;
   x=radius*sin(thetar)*cos(c80);
   y=radius*cos(thetar)*cos(c80);
   if(color)
    glColor3f((rand()%101*1.0)/100(rand()%101*1.0)/100(rand()%101*1.0)/100);

   glVertex3d(xyz);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3d(00-radius);
z=-radius*sin(c80);
for(theta=-180.0;theta<=180.0;theta+=step){
   thetar = c*theta;
   x=r

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     221230  2010-11-08 11:26  lab1\Debug\lab1.exe

     文件     266756  2010-11-08 11:26  lab1\Debug\lab1.ilk

     文件     329808  2010-11-08 11:26  lab1\Debug\lab1.pch

     文件     418816  2010-11-08 11:26  lab1\Debug\lab1.pdb

     文件      28714  2010-11-08 11:26  lab1\Debug\ss.obj

     文件      33792  2010-11-25 19:16  lab1\Debug\vc60.idb

     文件      45056  2010-11-08 11:26  lab1\Debug\vc60.pdb

     文件       4256  2010-11-08 11:26  lab1\lab1.dsp

     文件        533  2010-11-08 11:25  lab1\lab1.dsw

     文件      41984  2010-11-25 19:16  lab1\lab1.ncb

     文件      53760  2010-11-25 19:16  lab1\lab1.opt

     文件       1722  2010-11-08 11:26  lab1\lab1.plg

     文件       8490  2010-11-08 11:26  lab1\ss.c

     目录          0  2010-11-30 21:02  lab1\Debug

     目录          0  2010-11-30 21:02  lab1

----------- ---------  ---------- -----  ----

              1454917                    15


评论

共有 条评论