程序要实现的目标功能

1.绘制太阳系中太阳,八大行星及各自的卫星的三维球体模型,包括太阳在内的各天体具备合理的相对位置大小,在各自的运转轨道上有序分布和运行。
2.程序应有较好的动画效果,各大行星和卫星有合理的相对运行速度,整个太阳系模型具有优美的外观和较好的拟真度。
3.程序应具备基本的交互式功能,可以通过键盘和鼠标操作来调整观察视角,可以自由调整观察者与太阳系模型的距离,以及观察的方向。
实现效果:
                             侧面观察
                    顶部观察
程序代码:
#include "glut.h"#include<math.h>
#include<iostream>
using namespace std;#define PI 3.14159
void Rotate() ;
//水星、金星、地球、火星、木星、土星、天王星、和海王星
//adam,hesper,earth,mars,jupiter,saturn,uranus,neptune
static float year = 0, day = 0,adamYear=0,hesperYear=0,marsYear=0,jupiterYear=0,saturnYear=0,uranusYear=0,neptuneYear=0,sunYear=0,month=0;
static float mar_satellite_1,mar_satellite_2 ;
float light_angle=0;
float light_radius=8.0;
double x=0,y=0;double aix_x=0.0,aix_y=0.5,aix_z=0.5;GLdouble angle = 100.0;/*float theta=-90.0; //圆环旋转角
float angle=10; //左右场景每次旋转角
float sightangle=-90;
float s=10; //前后直走步长
float R=100;
int inner=10,outer=80;
*//*float eyex=0,eyey=0,eyez=outer+4*inner+50;
float atx=0,aty=0,atz=0;
float atx1,atz1,eyex1,eyez1;*/void lPosition()
{ float y,z; y=light_radius*cos(light_angle); z=light_radius*sin(light_angle);float light_position[] = { 3.0,y,z, 0.0 };
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
} void init(void)
{ glClearColor (0.0, 0.0, 0.0, 0.0);lPosition(); glShadeModel (GL_SMOOTH);            glEnable(GL_LIGHTING);               glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL);
}void material_sun()                               //设置太阳材质,以下同
{ GLfloat mat_specular[] = { 1.0, 0.0, 0.0, 1.0 };       GLfloat mat_shininess[] = { 50.0 };                  GLfloat lmodel_ambient[]={1.0,0.0,0.0,1.0};        //太阳颜色为红色      GLfloat white_light[]={1.0, 1.0,1.0, 1.0};             glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);     glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_adam()
{ GLfloat mat_specular[] = { 1.0, 0.0, 0.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={1.3,1.0,0.2,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_hesper()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={1.0,1.0,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_earth()
{ GLfloat mat_specular[] = { 1.0, 0.0, 0.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.1,0.2,0.6,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_mars()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={1.0,0.1,0.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_jupiter()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.8,0.7,0.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_saturn()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.6,0.6,0.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_uranus()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.3,0.3,0.7,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
} void material_neptune()
{ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.0,0.1,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}
void material_moon()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={1.0,1.0,0.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_mar_satellite_1()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.0,1.0,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_mar_satellite_2()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.0,0.0,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_neptune_satellite_1()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={1.0,0.0,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_neptune_satellite_2()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.0,0.0,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}
void material_uranus_satellite_1()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.3,0.2,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_uranus_satellite_2()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.3,0.4,0.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_jupiter_satellite()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.3,0.6,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void material_saturn_satellite()
{GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat lmodel_ambient[]={0.3,0.6,1.0,1.0}; GLfloat white_light[]={1.0, 1.0,1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
}void sun()                  //绘制太阳
{ glPushMatrix();
material_sun();
glTranslatef (-15,0,0);
glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);   //太阳自转glutSolidSphere(10, 200, 200);                //画球体        glPopMatrix();
} void adam()               //水星
{ glPushMatrix();
material_adam();
glTranslatef (-15,0,0);glRotatef ((GLfloat) adamYear, aix_x, aix_y, aix_z);    //水星公转周期glTranslatef (15,0,0);
glTranslatef (0.2,0,0);glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);        //水星自转
glTranslatef (-0.5,0,0);
glTranslatef (0.5,0,0);glutSolidSphere(0.5, 20, 16); glPopMatrix();
} void hesper()
{ glPushMatrix(); material_hesper();
glTranslatef (-15,0,0);glRotatef ((GLfloat)hesperYear,aix_x, aix_y, aix_z);
glTranslatef (15,0,0);glTranslatef (0.8,0,0);glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glTranslatef (-1,0,0);
glTranslatef (1,0,0);glutSolidSphere(0.8, 20, 16);glPopMatrix();
} void earth()
{ glPushMatrix(); material_earth();
glTranslatef (-15,0,0);glRotatef ((GLfloat) year, aix_x, aix_y, aix_z);
glTranslatef (15,0,0);glTranslatef (2,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glTranslatef (-2,0,0);
glTranslatef (2,0,0);glutSolidSphere(1.0, 20, 16);
//  glColor3f(0.0, 1.0, 0.0);material_moon();                          //绘制月球,以下以同样方法绘制各行星的卫星glRotatef(month/100, 0.0, 0.0, 1.0);glTranslatef(2, 0.0, 0.0);glutSolidSphere(0.3, 10, 10);glPopMatrix();
} void mars()
{ glPushMatrix(); material_mars();glTranslatef (-15,0,0);glRotatef ((GLfloat)marsYear,aix_x, aix_y, aix_z);glTranslatef (15,0,0);glTranslatef (7,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); glTranslatef (-7,0,0);glTranslatef (7,0,0);glutSolidSphere(0.6, 20, 16);  glPushMatrix();material_mar_satellite_1();glRotatef(month/20, 0.0, 1.0, 0.0);glTranslatef(1, 0.0, 0.0);glutSolidSphere(0.1, 10, 10);
glPopMatrix(); glPushMatrix();material_mar_satellite_2();glRotatef(month/46, 0.0, 1.0, 0.0);glTranslatef(1.5, 0.0, 0.0);glutSolidSphere(0.2, 10, 10);
glPopMatrix(); glPopMatrix();
}void jupiter()
{ glPushMatrix(); material_jupiter();glTranslatef (-15,0,0);glRotatef ((GLfloat)jupiterYear, aix_x, aix_y, aix_z); glTranslatef (15,0,0);glTranslatef (13,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); glTranslatef (-13,0,0); glTranslatef (13,0,0); glutSolidSphere(2.0, 20, 16);  glPushMatrix();glRotatef(90,1.0,0,0.0);
glutSolidTorus(0.25, 5.0, 5, 64);
glRotatef(-90,1.0,0,0.0);/* glutSolidTorus(0.1, 1.25, 10, 64);
glRotatef(-90,1.0,0,0.0);
glRotatef(90,1.0,0,0.0);*/material_jupiter_satellite();glRotatef(90,1.0,0,0.0);glRotatef(month/58, 0.0, 1.0, 0.0);glTranslatef(3, 0.0, 0.0);glutSolidSphere(0.6, 10, 10);/* glutSolidTorus(0.07, 1.65, 10, 64);
glRotatef(-90,1.0,0,0.0);
glPopMatrix();*/glPopMatrix(); glPopMatrix();
}void saturn()
{ glPushMatrix();
material_saturn();
glTranslatef (-15,0,0);glRotatef ((GLfloat) saturnYear, aix_x, aix_y, aix_z);
glTranslatef (15,0,0);glTranslatef (20,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glTranslatef (-20,0,0);
glTranslatef (20,0,0);
glRotatef (0.3, 1.0, 0.0, 0.0);glutSolidSphere(1.4, 20, 16);  glPushMatrix();glRotatef(90,1.0,0,0.0);
glutSolidTorus(0.1, 3.0, 5, 64);
glRotatef(-90,1.0,0,0.0);material_saturn_satellite();glRotatef(month/76, 0.0, 1.0, 0.0);glTranslatef(2.7, 0.0, 0.0);glutSolidSphere(0.4, 10, 10);glPopMatrix();
glPopMatrix();
} void uranus()
{ glPushMatrix();
material_uranus();
glTranslatef (-15,0,0);glRotatef ((GLfloat) uranusYear,aix_x, aix_y, aix_z);
glTranslatef (15,0,0);glTranslatef (28,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glTranslatef (-28,0,0);
glTranslatef (28,0,0);
glRotatef (0.5, 1.0, 0.0, 0.0);glutSolidSphere(1.5, 20, 16); glPushMatrix();glRotatef(90,1.0,0,0.0);
glutSolidTorus(0.1, 3.0, 5, 64);
glRotatef(-90,1.0,0,0.0);glPushMatrix();material_uranus_satellite_1();glRotatef(month/108, 0.0, 1.0, 0.0);glTranslatef(2, 0.0, 0.0);glutSolidSphere(0.23, 10, 10);
glPopMatrix(); glPushMatrix();material_uranus_satellite_2();glRotatef(month/145, 0.0, 1.0, 0.0);glTranslatef(3.5, 0.0, 0.0);glutSolidSphere(0.35, 10, 10);
glPopMatrix();glPopMatrix();
glPopMatrix();
} void neptune()
{ glPushMatrix();
material_neptune();
glTranslatef (-15,0,0);glRotatef ((GLfloat) neptuneYear,aix_x, aix_y, aix_z);
glTranslatef (15,0,0);glTranslatef (32,0,0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glTranslatef (-32,0,0);
glTranslatef (32,0,0);
glRotatef (0.5, 1.0, 0.0, 0.0);glutSolidSphere(1.3, 20, 16);    glPushMatrix();glRotatef(90,1.0,0,0.0);
glutSolidTorus(0.1, 3.0, 5, 64);
glRotatef(-90,1.0,0,0.0);glPushMatrix();material_neptune_satellite_1();glRotatef(month/347, 0.0, 1.0, 0.0);glTranslatef(2.5, 0.0, 0.0);glutSolidSphere(0.35, 10, 10);
glPopMatrix(); glPushMatrix();material_neptune_satellite_2();glRotatef(month/389, 0.0, 1.0, 0.0);glTranslatef(3.5, 0.0, 0.0);glutSolidSphere(0.3, 10, 10);
glPopMatrix(); glPopMatrix(); glPopMatrix(); } void display(void)
{ lPosition(); glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); sun(); adam(); hesper(); earth(); mars(); jupiter(); saturn(); uranus(); neptune(); Rotate();glutSwapBuffers();
} void myidle()
{
day+=10.0;
if (day>=360)
day=day-360;glutPostRedisplay();
}void Rotate()          //设置各行星的公转周期
{ //adamYear=0,hesperYear=0,marsYear=0,jupiterYear=0,saturnYear=0,uranusYear=0,neptuneYear=0; //  adamYear=(adamYear+1.2)%360; adamYear+=0.12;if(adamYear>=360)adamYear-=360;
//   hesperYear=(hesperYear+2)%360; hesperYear+=0.10;if(hesperYear>=360)hesperYear-=360;//  year=(year+0.8)%360;year+=0.08;if(year>=360)year-=360;
//   marsYear=(marsYear+0.6)%360;marsYear+=0.06;if(marsYear>=360)marsYear-=360;//   jupiterYear=(jupiterYear+0.5)%360; jupiterYear+=0.05;if(jupiterYear>=360)jupiterYear-=360;
//   saturnYear=(saturnYear+0.4)%360; saturnYear+=0.04;if(saturnYear>=360)saturnYear-=360;//  uranusYear=(uranusYear+0.3)%360; uranusYear+=0.03;if(uranusYear>=360)uranusYear-=360;
//   neptuneYear=(neptuneYear+0.1)%360; neptuneYear+=0.01;if(neptuneYear>=360)neptuneYear-=360;glutPostRedisplay();                month+=0.03;if(month>=360)month-=360;
} void mykeyboard(unsigned char key, int x, int y)
{
switch(key)
{
case 'U':
case 'u':
aix_y-=0.01;
aix_z+=0.01;
break;
case 'D':
case 'd':
aix_y+=0.01;
aix_z-=0.01;
break;case 'W':
case 'w':
angle-=10.0;
break;
case 'S':
case 's':
angle+=10.0;
break;
}glutPostRedisplay();  }void reshape (int w, int h)
{ glViewport (0, 0, (GLsizei) w, (GLsizei) h);                glMatrixMode (GL_PROJECTION);                               glLoadIdentity ();    gluPerspective(angle, (GLfloat) w/(GLfloat) h, 1.0, 200.0); glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0,0.0,-50.0);
} int main(int argc, char** argv)
{
cout<<argc<<endl;
cout<<&argc<<endl;for(int i=0;i<argc;i++)
{
cout<<*argv[i]<<endl;
}glutInit(&argc, argv);                                      glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);   glutInitWindowSize (800, 600);                              glutInitWindowPosition (100, 100);                          glutCreateWindow ("solar system");                          init (); glutDisplayFunc(display);          glutReshapeFunc(reshape);       glutIdleFunc(myidle);   glutKeyboardFunc(mykeyboard);   glutMainLoop();                 return 0;
} 

OpenGL模拟太阳系运行相关推荐

  1. OpenGL(glut)模拟太阳系:太阳,地球,月球,火星

    GitHub项目地址OpenGL(glut)模拟太阳系:太阳,地球,月球,火星 核心代码如下: // orgin.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并 ...

  2. python绘制动态模拟图-如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  3. HTML5的Canvas画图模拟太阳系运转

    今天研究的是利用HTML5的Canvas画图来模拟太阳系运转,首先,在这个太阳系里分为画轨道和画星球两个部分, 对于每一个星球我们要知道它的颜色和公转周期,如下图. 采用面向对象编程的思想,代码如下 ...

  4. 如何利用Python动态模拟太阳系运转

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 前 ...

  5. python绘制太阳系_如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  6. python模拟太阳系_用Unity3D实现太阳系仿真

    用Unity3D模拟太阳系仿真 模拟要求 写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上. 操作步骤 1.创建如下结构 sun 里包括8大行星, 并且设置好距 ...

  7. 空间与运动——模拟太阳系、牧师与魔鬼游戏实现详解

    文章目录 一.简答并用程序验证: 1.1 游戏对象运动的本质是什么? 1.2 请用三种方法以上方法,实现物体的抛物线运动 1.3 写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样, ...

  8. css3 3d 太阳系,使用css3的动画模拟太阳系恒星公转

    原标题:使用css3的动画模拟太阳系恒星公转 本文介绍使用css3的animation画一个太阳系恒星公转的动画,再加以改进,讨论如何画椭圆的运行轨迹.然后分析京东和人人网使用animation的实际 ...

  9. openGL模拟烟雾特效

    前言 使用openGL模拟烟雾特效,基于Bulr算法,通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果,"模糊"的算法有很多种,其中有一种 ...

最新文章

  1. go get 无法下载问题解决方案及下载 aliyun-oss-go-sdk incompatible.info
  2. 图像分类matlab结果,libsvm图像二分类后,分类的图像结果如何显示?
  3. python语法速成方法_30分钟学完Python基础语法
  4. Python logging动态调整日志等级
  5. Bit-Z CEO长顺入围2018中国经济潮流人物
  6. 模型驱动 ModelDriven
  7. ride上点击用例不能显示edit信息_接口测试平台代码实现61: 多接口用例1
  8. Python生态概览(二):网络爬虫、web信息提取、网站开发、网络应用开发
  9. SQL调优日记--并行等待的原理和问题排查
  10. Canvas里的globalCompositeOperation
  11. matlab如何提取文本词干,英文词干提取(stemming)算法 - Lovins, Porter
  12. kafka问题之Listener method could not be invoked with the incoming message
  13. 透过案例看清API接口的作用——演示1688商品详情接口
  14. VIN码识别技术加速汽车后市场服务速度
  15. 牛顿(Newton)方法
  16. html 判断是否是数字,判断是否是数字或者是否是整数.html
  17. 鲲鹏基础软硬件平台持续升级,赋能伙伴开发者用好鲲鹏
  18. OD调试中的小技巧--一点点总结,大佬请绕行
  19. STM32利用定时器1控制LED闪烁
  20. using-fastcgi-to-host-php-applications-on-iis7

热门文章

  1. 软件需求分析(第九章)
  2. python_cv2_图片黑白操作
  3. 单链表的逆转:(头尾互换)
  4. 如何将计算机桌面屏幕放大,怎么能把电脑屏幕放大
  5. php模拟登录QQ空间3.0 2014-11-23
  6. html5画图程序,基于HTML5的Windows画图程序
  7. 微信公众号最佳实践 ( 4.7)获取用户地理位置
  8. CASE SOLVED: ubuntu16.04 搜狗拼音中文乱码
  9. 代尔夫特理工大学计算机科学排名,2019-2020代尔夫特理工大学世界排名多少【QS最新第50名】...
  10. RTOS系列(12):使用SVC或PendSV启动OS流程详细分析