Image: Moon trajectory1
Description: Section of the Earth–Moon system's trajectory around the Sun in proper scale. ▇ orbital path of the Earth▇ orbital path of the Moon
Español: Un diagrama que ilustra la coórbita de la Luna con la Tierra. Used parameters import numpy as np import matplotlib.pyplot as plt rEM = 38 # SVG pixel per |Earth-Moon|; we're going to round to int. rSE = rEM*389.168 # pixel per |Sun-Earth| n = 10 # polygon segments per quarter month; with cubic splines, n = 1 would probably suffice. p = 12.4 # synodic months per year; 4*n*p segments per year. θ = 2*np.pi*np.arange(-n-1, 3*n)/(4*n*p) # one month xE = rSE*np.sin(θ) yE =-rSE*np.cos(θ) xM = rSE*np.sin(θ) + rEM*(np.sin(p*θ)*np.cos(θ) + np.cos(p*θ)*np.sin(θ)) # Rotate rM vector by Earth's arc angle. yM =-rSE*np.cos(θ) - rEM*(np.cos(p*θ)*np.cos(θ) - np.sin(p*θ)*np.sin(θ)) fig, ax = plt.subplots(figsize=(19,2.5)) ax.plot(xE, yE, 'b-', linewidth=.5) ax.plot(xM, yM, 'k-') ax.plot(xE[1::n], yE[1::n], 'bo', markersize=5) ax.plot(xM[1::n], yM[1::n], 'ko', markersize=2) fig.tight_layout() fig.show() xE = xE.astype(int) yE = yE.astype(int) xM = xM.astype(int) yM = yM.astype(int) rM = 8; rE = 20 # radii, not to scale (would be 0.17 and 0.63) open('out.svg', 'w').write(f<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="1600" height="{1600*(rSE+rEM+rM+yM[-1])/(xE[-1]-xE[0])}" viewBox="{xE[0]} {-(rSE+rEM+rM)} {xE[-1]-xE[0]} {rSE+rEM+rM+yM[-1]}"> <defs> <marker id="E" overflow="visible"><circle r="{rE}" fill="blue"/></marker> <marker id="M" overflow="visible"><circle r="{rM}" fill="black"/></marker> </defs> <path fill="none" stroke="blue" stroke-width="2" d="M{'L'.join([x+' '+y for x,y in zip(xE.astype(str), yE.astype(str))])}"/> <path fill="none" stroke="black" stroke-width="4" d="M{'L'.join([x+' '+y for x,y in zip(xM.astype(str), yM.astype(str))])}"/> <path fill="none" stroke="none" marker-start="url(#M)" marker-mid="url(#M)" marker-end="url(#M)" d="M{'L'.join([x+' '+y for x,y in zip(xM[1::n].astype(str), yM[1::n].astype(str))])}"/> <path fill="none" stroke="none" marker-start="url(#E)" marker-mid="url(#E)" marker-end="url(#E)" d="M{'L'.join([x+' '+y for x,y in zip(xE[1::n].astype(str), yE[1::n].astype(str))])}"/> </svg>
)
Usage Terms: Public domain
Image usage
The following page links to this image: