opengl实现太阳系天体运动(2)

2019-08-31 23:39

glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluOrtho2D(-(GLdouble) w/2, (GLdouble) w/2, -(GLdouble) h/2, (GLdouble) h/2); };

int main( int argc, char* argv[] ) {

glutInit( &argc, argv );

glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize( 800, 800 ); glutInitWindowPosition( 100, 100 ); glutCreateWindow( \ ); init();

glutDisplayFunc( &display ); glutReshapeFunc( &reshape ); glutMainLoop();

return 0; }

2、绘制一个球体(太阳) // Purpose: To show how to draw the solar system // Author: zieckey // Date: 2009/10/7

#include \ #include

// Rotation amounts

static GLfloat xRot = 0.0f; static GLfloat yRot = 0.0f;

void SpecialKeys(int key, int x, int y); void ChangeSize( GLsizei w, GLsizei h ); void DrawAxis(); void SetupRC();

void RenderScene() {

//清空颜色缓冲区,填充的颜色由 glClearColor( 0, 0.0, 0.0, 1 ); 指定为黑色

glClear( GL_COLOR_BUFFER_BIT );

// Save matrix state and do the rotation glPushMatrix();

glRotatef(xRot, 1.0f, 0.0f, 0.0f); glRotatef(yRot, 0.0f, 1.0f, 0.0f);

DrawAxis();

//绘制太阳

glColor3f( 1.0f, 1.0f, 1.0f ); glutSolidSphere( 50.f, 15, 15 );

// Restore transformations glPopMatrix();

glutSwapBuffers(); }

int main(int argc, char* argv[]) {

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (800, 600); glutInitWindowPosition (100, 100); glutCreateWindow( \ ); glutDisplayFunc( RenderScene ); glutReshapeFunc( ChangeSize ); glutSpecialFunc( SpecialKeys ); SetupRC(); glutMainLoop();

return 1; }

void SetupRC() {

glClearColor( 0, 0.0, 0.0, 1 ); glShadeModel( GL_SMOOTH ); }

void ChangeSize( GLsizei w, GLsizei h ) {

GLfloat nRange = 200.0f;

// Prevent a divide by zero

if(h == 0) h = 1;

// Set Viewport to window dimensions

glViewport(0, 0, w, h);

// Reset projection matrix stack

glMatrixMode(GL_PROJECTION); glLoadIdentity();

// Establish clipping volume (left, right, bottom, top, near, far)

if (w <= h)

glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange); else

glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);

// Reset Model view matrix stack

glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }

void SpecialKeys(int key, int x, int y) {

if(key == GLUT_KEY_UP) xRot -= 5.0f;

if(key == GLUT_KEY_DOWN) xRot += 5.0f;

if(key == GLUT_KEY_LEFT) yRot -= 5.0f;

if(key == GLUT_KEY_RIGHT) yRot += 5.0f;

if(xRot > 356.0f) xRot = 0.0f;

if(xRot < -1.0f) xRot = 355.0f;

if(yRot > 356.0f) yRot = 0.0f;

if(yRot < -1.0f)


opengl实现太阳系天体运动(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人工智能

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: