opengl实现地球围绕太阳转动


opengl使用顶点数组画出球体,实现地球围绕太阳转动,左键加快地球围绕太阳的转速,右键减慢地球围绕太阳的转速
资源截图
代码片段和文件信息
#include
#include
#include
#include
#include 

#pragma comment(lib “glaux.lib“)

float theta[3]={0.00.00.0};
double speed=0.05;
double day=0.0;
float view[3]={4.0-74.0};
unsigned int g_texture[3];
void sphere(GLfloat fRadius)
{
int longitude=20;
int latitude=20;
double PI=3.1415926;
GLfloat drho = PI / (GLfloat) longitude;
GLfloat dtheta = 2.0f * PI / (GLfloat) latitude;
GLfloat ds = 1.0f / (GLfloat) latitude;
GLfloat dt = 1.0f / (GLfloat) longitude;
GLfloat t = 1.0f;
GLfloat s = 0.0f;
GLint i j;     

for (i = 0; i < longitude; i++) 
{
GLfloat rho = (GLfloat)i * drho;
GLfloat srho = (GLfloat)(sin(rho));
GLfloat crho = (GLfloat)(cos(rho));
GLfloat srhodrho = (GLfloat)(sin(rho + drho));
GLfloat crhodrho = (GLfloat)(cos(rho + drho));

s = 0.0f;
GLfloat sv[42][3];
GLfloat normal[42][3];
GLfloat texture[42][2];
int i=0;
for ( j = 0; j <= latitude; j++) 
{
GLfloat theta = (j == latitude) ? 0.0f : j * dtheta;
GLfloat stheta = (GLfloat)(-sin(theta));
GLfloat ctheta = (GLfloat)(cos(theta));

GLfloat x = stheta * srho;
GLfloat y = ctheta * srho;
GLfloat z = crho;

sv[i][0]=x * fRadius;
sv[i][1]=y * fRadius;
sv[i][2]=z * fRadius;

normal[i][0]=x;
normal[i][1]=y;
normal[i][2]=z;

texture[i][0]=s;
texture[i][1]=t;

x = stheta * srhodrho;
y = ctheta * srhodrho;
z = crhodrho;
s += ds;
sv[i+1][0]=x * fRadius;
sv[i+1][1]=y * fRadius;
sv[i+1][2]=z * fRadius;

normal[i+1][0]=x;
normal[i+1][1]=y;
normal[i+1][2]=z;

texture[i+1][0]=s;
texture[i+1][1]=t-dt;
i +=2;
}
glVertexPointer(3GL_FLOAT0sv);
glNormalPointer(GL_FLOAT0normal);
glTexCoordPointer(2GL_FLOAT0texture);
glDrawArrays(GL_TRIANGLE_STRIP042);
t -= dt;
}
}

void mydisplay()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glMatrixMode (GL_PROJECTION);    
glLoadIdentity ();
gluPerspective(45.01.01.020);
gluLookAt(view[0]view[1]view[2]000001);



glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D g_texture[0]);
sphere(0.6);

glBindTexture(GL_TEXTURE_2D g_texture[1]);
day +=speed;
if(day>360.0) day=0.0;
glRotated(-day001);
glTranslatef(3.00.00.0);
sphere(0.3);

glBindTexture(GL_TEXTURE_2D g_texture[2]);
glRotated((day/40.0*360.0 - day)00-1);
glTranslatef(0.60.00.0);
sphere(0.15);

GLfloat light_model_ambient[]={0.70.70.71.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENTlight_model_ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);

glutPostRedisplay();
glutSwapBuffers();
glFlush();
}

//载入一个.bmp格式的贴图纹理
int LoadGLTextures(GLuint* unTexture)                
{
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-10-26 08:08  11301046_王真真_Assignment1
     目录           0  2013-10-26 08:14  11301046_王真真_Assignment1screenshot
     文件       26923  2013-10-26 08:12  11301046_王真真_Assignment1screenshot截图1.png
     文件       32472  2013-10-26 08:13  11301046_王真真_Assignment1screenshot截图2.png
     文件       19154  2013-10-26 08:14  11301046_王真真_Assignment1screenshot截图3.png
     目录           0  2013-10-26 08:18  11301046_王真真_Assignment1source code
     文件      786488  2013-10-26 02:29  11301046_王真真_Assignment1source codeearth1.bmp
     文件        7098  2013-10-26 02:41  11301046_王真真_Assignment1source codeexercise2.cpp
     文件      786488  2013-10-26 02:33  11301046_王真真_Assignment1source codemoon1.bmp
     文件      786488  2013-10-25 22:59  11301046_王真真_Assignment1source codesun1.bmp
     文件       62976  2013-10-26 02:41  11301046_王真真_Assignment1source code est2.exe
     目录           0  2013-10-26 08:18  11301046_王真真_Assignment1source code库文件
     文件       12024  2011-11-13 16:06  11301046_王真真_Assignment1source code库文件GLAUX.H
     文件     1189322  2011-11-13 17:02  11301046_王真真_Assignment1source code库文件GLAUX.LIB
     文件     1386496  2011-11-13 16:06  11301046_王真真_Assignment1source code库文件glaux.dll
     文件      169984  1998-08-18 16:25  11301046_王真真_Assignment1source code库文件glut.dll
     文件       21440  1998-08-18 16:24  11301046_王真真_Assignment1source code库文件glut.h
     文件       79654  1998-08-18 16:25  11301046_王真真_Assignment1source code库文件glut.lib
     文件      169984  1998-08-18 16:25  11301046_王真真_Assignment1source code库文件glut32.dll
     文件       79898  1998-08-18 16:25  11301046_王真真_Assignment1source code库文件glut32.lib
     文件         203  2013-10-26 08:08  11301046_王真真_Assignment1说明.txt

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)