opengl使用顶点数组画出球体,实现地球围绕太阳转动,左键加快地球围绕太阳的转速,右键减慢地球围绕太阳的转速
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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
#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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)