快捷搜索:  汽车  科技

月亮运行的轨迹(月亮的轨迹参考)

月亮运行的轨迹(月亮的轨迹参考)

月亮运行的轨迹(月亮的轨迹参考)(1)

大圆轨迹的画法,应该没什么问题,可以看成是极坐标系转笛卡尔坐标系。x=r*cos(i) y=r*sin(i) i的变化范围[0 2PI).

再叠加一个伴行的圆呢?这时候就要考虑小轨道半径d了,可以在上面圆轨迹的基础上修正x和y。考虑到一圈大圆是2pi,如果每次公转子卫星绕行n圈,那么大圆每走1弧度,则小圆弧度每次变化为(2pi*n)/(2*pi)=n弧度;为了画图时更平滑,我们把大圆分成pi*2*100份,每次走1/100弧度,则小圆弧度每次变化n/100弧度.

下面就是参考代码,你画出来了吗?

import turtle import math tt=turtle.Turtle() tk=turtle.Turtle() tout=turtle.Turtle() tt.pencolor('red')#子卫星1轨道 tk.pencolor('blue')#子卫星2轨道 tout.pencolor('green')#公转轨道 r=300#公转半径 d=50#自转半径 n=10#每次公转含有的自转次数 tt.up() tt.goto(r d 0) tt.down() tk.up() tk.goto(r 0) tk.down() tout.up() tout.goto(r 0) tout.down() k=0 for i in range(0 round(math.pi*2*100)): k=(k n/100) tout.goto(math.cos(i/100)*r math.sin(i/100)*r)#公转轨道 tt.goto(math.cos(i/100)*(r) math.cos(k)*d math.sin(i/100)*(r) math.sin(k)*d)#子卫星1轨道(通公转方向) tk.goto(math.cos(i/100)*(r) math.sin(k)*d math.sin(i/100)*(r) math.cos(k)*d)#子卫星2轨道(逆公转方向) tt.up() tout.up()

猜您喜欢: