计算机图形学OpenGL中绘制太阳_地球_月亮的运动模型源代码

计算机图形学OpenGL中绘制太阳_地球_月亮的运动模型源代码


2024年4月15日发(作者:)

#include

static int day = 148; // day的变化:从0到359

void myDisplay(void)

{

glEnable(GL_DEPTH_TEST);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(75, 1, 1, 400000000);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1);

// 红色的“太阳”

glColor3f(1.0, 0.0, 0.0);

glutSolidSphere(69600000, 100, 100);

// 蓝色的“地球”

glColor3f(0.0, 0.0, 1.0);

glRotatef(day/360.0*360.0, 0.0, 0.0, -1.0);

glTranslatef(150000000, 0.0, 0.0);

glutSolidSphere(15945000, 100, 100);

// 黄色的“月亮”

glColor3f(1.0, 1.0, 0.0);

glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0, 0.0, -1.0);

glTranslatef(38000000, 0.0, 0.0);

glutSolidSphere(4345000, 100, 100);

glFlush();

glutSwapBuffers();

}

void myIdle(void)

{

++day;

if( day >= 360 )

day = 0;

myDisplay();

}

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

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

glutInitWindowPosition(100, 100);

glutInitWindowSize(450, 450);

glutCreateWindow("张鹏飞-魏万晓");

glutDisplayFunc(&myDisplay);

glutIdleFunc(&myIdle);

glutMainLoop();

return 0;

}


发布者:admin,转转请注明出处:http://www.yc00.com/news/1713135262a2189832.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信