目录
前言:
个人学习内容分享:太阳系模型:初学matlab的绘图学习案例。
想要得到更加完美的星球信息进行更改:推荐奇点天文实验室获取更加真实的数据。
效果图如下:
编辑
Matlab代码:
1.主调用文件:
clear;clc
%行星级半径在20以上,卫星在20以内
title='taiyangxi';
text='taiyangxi';
for t=0:3600
%(球心坐标x,y,z,半径,自转效果)
drawball(0,0,0,40,t);
hold on
%(公转半径,公转圆心x坐标,公转圆心y坐标,相对纵向空间位置,自转半径,自转效果,公转速度)
%水星
Mercury=drawxinggui(50,0,0,0,1,t,10/58);
%金星
Venus=drawxinggui(100,0,0,0,2.3,t,10/243);
%地球,月亮
Earth=drawxinggui(150,0,0,0,2.5,t,10);
moor.x=Earth(1);
moor.y=Earth(2);
drawxinggui(25,moor.x,moor.y,0,0.8,t,10)
%火星
Mars=drawxinggui(200,0,0,0,1.5,t,10);
%土星
Saturn=drawxinggui(375,0,0,0,25,t,10/0.5);
%天王星
Uranus=drawxinggui(500,0,0,0,11,t,10/0.7);
%海王星
Neptune=drawxinggui(1000,0,0,0,10,t,10/0.8);
%木星
Jupiter=drawxinggui(300,0,0,0,33,t,10/0.4);
axis equal
pause(0.04)
hold off
end
2.相对公转绘制:
同时调用绘制星轨和行星的函数,只不过这里公转的圆心发生了改变。
function w1=drawxinggui(R,x,y,z,r,c,v)
x1=R*cos(c/180*pi*v)+x;
y1=R*sin((c/180)*pi*v)+y;
w1=[x1,y1];
drawcircle(x,y,R)
drawball(x1,y1,z,r,c)
3.移动轨迹绘制:
绘制星轨:其实就是星球运动的轨迹
function drawcircle(x0,y0,r0)
c=linspace(0,2*pi,100);
X=r0*cos(c)+x0;
Y=r0*sin(c)+y0;
plot(X,Y)
axis equal
4.个体主体绘制:
绘制一个自转的星球
function drawball(x0,y0,z0,r0,c)
a=linspace(0,pi,20);
b=linspace(0,2*pi,40)+c;
[A,B]=meshgrid(a,b);
X=r0*sin(A).*cos(B)+x0;
Y=r0*sin(A).*sin(B)+y0;
Z=r0*cos(A)+z0;
mesh(X,Y,Z)
end
总结:
这是一个非常非常基础的一个星系运行模型,然后真实星球大小比例绘制出的图案,属实不美观,所以只能进行简化处理,然后行星运行的轨迹其实不完全是圆形,所以为了追求更加贴近真实,其实可以赋予更加准确的运动轨迹的相关参数,还有行星的公转轨迹也不再同一个平面上。以及动态的美观,行星轨迹可以改为逐渐生成。
标签:10,r0,绘制,模型,Matlab,pi,drawxinggui,公转,太阳系 From: https://www.cnblogs.com/bubianyingzi/p/17007063.html