天体运动模型程序代码.docx_第1页
天体运动模型程序代码.docx_第2页
天体运动模型程序代码.docx_第3页
天体运动模型程序代码.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#include#define PI 3.14159 #define MAXSTAR 20000/星星总数#pragma comment( lib, MSIMG32.LIB)struct STARdouble x;int y;double step;int color;STAR starMAXSTAR;void InitStar(int i)/初始化星星stari.x = 0;stari.y =rand() % 800;stari.step =(rand() % 5000) / 1000.0 + 1)*100000000;stari.color = (int)(stari.step * 255 / 6.0 +10);stari.color = RGB(stari.color, stari.color, stari.color);void MoveStar(int i)if (stari.x 1360)InitStar(i);putpixel(pow(-1,i)*(int)stari.x,pow(-1,i)*stari.y, stari.color);/画新星星 putpixel(pow(-1,i)*(int)stari.x,pow(-1,i+1)*stari.y, stari.color);/画新星星putpixel(pow(-1,i)*(int)stari.x+1,pow(-1,i)*stari.y, stari.color);/画新星星 putpixel(pow(-1,i)*(int)stari.x+1,pow(-1,i+1)*stari.y, stari.color);/画新星星putpixel(pow(-1,i)*(int)stari.x,pow(-1,i)*stari.y+1, stari.color);/画新星星 putpixel(pow(-1,i)*(int)stari.x,pow(-1,i+1)*stari.y+1, stari.color);/画新星星putpixel(pow(-1,i)*(int)stari.x-1,pow(-1,i)*stari.y, stari.color);/画新星星 putpixel(pow(-1,i)*(int)stari.x-1,pow(-1,i+1)*stari.y, stari.color);/画新星星putpixel(pow(-1,i)*(int)stari.x,pow(-1,i)*stari.y-1, stari.color);/画新星星 putpixel(pow(-1,i)*(int)stari.x,pow(-1,i+1)*stari.y-1, stari.color);/画新星星class Solarfloat a8; /公转轨道的半长轴float e8; /轨道的偏心率float t8; /公转周期float r8; /行星半径float x8; /在某处时的横坐标float y8; /在某处时的纵坐标public:Solar(float a18,float e18,float t18,float r18)for(int i=0;i8;i+)ai=a1i;ei=e1i;ti=t1i;ri=r1i;void Sun()float m=0;m=a0*e0;IMAGE img;loadimage(&img, E:x0.jpg);putimage(-m-60,-39, &img);void Xx() srand(unsigned)time(NULL); /随机种子int N=0;float m,n,A,C,X2,Y2;BeginBatchDraw();for(int c=0;cpow(10,8);c+)Sun();for(int j=0;j8;j+)A=2*PI*c/tj+PI*j/60;switch(j)case 0:C=A+3;break;case 1:C=A+5;break;case 2:C=A+2;break;case 3:C=A+3;break;case 4:C=A+2.5;break;case 5:C=A+0;break;case 6:C=A-0.5;break;case 7:C=A+0;break; m=aj*(1-ej*ej);n=1+ej*cos(C);xj=m*cos(C)/n;yj=m*sin(C)/n; IMAGE img; switch(j) case 0:loadimage(&img, E:x1.jpg);xj-=9;yj-=8;break;case 1:loadimage(&img, E:x2.jpg);xj-=13;yj-=13;break;case 2:loadimage(&img, E:x3.jpg);xj-=17;yj-=17;break;case 3:loadimage(&img, E:x4.jpg);xj-=2;yj-=14;break;case 4:loadimage(&img, E:x5.jpg);xj-=37;yj-=37;break;case 5:loadimage(&img, E:x6.jpg);xj-=42;yj-=28;break;case 6:loadimage(&img, E:x7.jpg);xj-=25;yj-=24;break;case 7:loadimage(&img, E:x8.jpg);xj-=23;yj-=23;break; putimage(xj,yj, &img); if(j=2) /月亮X0=x2+25*cos(PI*c/14);Y0=y2+25*sin(PI*c/14);IMAGE img2;loadimage(&img2, E:x31.jpg);putimage(X0+12,Y0+12, &img2);if(j=7) /擦除之前画的for(int k=0;k1000) setfillcolor(BLACK); fillrectangle(-680,400,680,-400); N=0; for(int i=0;i8;i+) setcolor(BLACK); setfillcolor(BLACK);if(i=4)fillcircle(xi,yi,ri);if(i=5)fillcircle(xi,yi,ri+20);fillcircle(xi,yi,ai);fillcircle(X0,Y0,2.5);fillcircle(X1,Y1,3);fillcircle(X2,Y2,5); ;void main() initgraph(1366,768);setorigin(683,384); /重置原点 FlushBatchDraw();setaspectratio(1,-1); /改正 y轴 方向float r18=3,6,6.5,4,20,14,12,8,a18=70,130,190,300,380,490,560,630; /行星半径 r1 和轨道半长轴 a1float t18=87.70,224.701,365,686.98,4332.589,29

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论