#include <gl/glut.h>
static int year = 0, day = 0;
static int sun = 0;
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glPushMatrix();
glRotatef((GLfloat)sun, 0.0, 1.0, 0.0);
glutWireSphere(1.0, 20, 16);
glRotatef((GLfloat)year, 0.0, 1.0, 0.0);
glTranslatef(2.0, 0.0, 0.0);
glRotatef((GLfloat) day, 0.0, 1.0, 0.0);
glutWireSphere(0.2, 10, 8);
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 'd':
day = (day + 10) % 360;
sun = (sun + 1) % 360;
glutPos
OpenGL 实现模拟太阳系运动
最新推荐文章于 2022-06-23 12:34:38 发布
该博客详细介绍了如何利用OpenGL实现太阳系的动态模拟,包括行星的公转和自转。首先,行星在全局坐标下完成绕太阳的旋转,接着进行位置偏移,最后在其局部坐标系统中执行自转。
摘要由CSDN通过智能技术生成