‘’’
Kod koristen za izradu animacija gibanja Marsa i Venere gledano sa Zemlje koje su prikazane na vjezbama.
Python 3.5
‘’’

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation




π=np.pi
t = np.linspace(0, 1, 30*10)        
ρ={'e':1,'v':.7,'m':1.5}
φ={'e':π/4,'v':0,'m':π/2}
ω={k:2*π*ρ[k]**(-1.5) for k in ρ.keys()}
planets={}
lines={}
imena={'e':'Zemlja','v':'Venera','m':'Mars'}
sky=5.
color={'e':'g','m':'r','v': '#ffa500'}
fig= plt.figure(figsize=(6,6))
ax=fig.add_subplot(111)
fig.patch.set_visible(False)
ax.axis('off')
ax.set_xlim(-5,5)
ax.set_ylim(-5,5)
for k in ['e', 'm']:
	ax.plot(ρ[k]*np.cos(np.linspace(0,2*π)), ρ[k]*np.sin(np.linspace(0,2*π)),'k')
	planets[k], = ax.plot(ρ[k]*np.cos(φ[k]), ρ[k]*np.sin(φ[k]),'o',label=imena[k],color=color[k])
ax.plot(sky*np.cos(np.linspace(0,2*π)), sky*np.sin(np.linspace(0,2*π)),'b')
ax.plot(0,0,'yo',label='Sunce')
def line(ax,bx,ay,by,t):
	return [bx*t+(1-t)*ax,by*t+(1-t)*ay]
for p in ['m']:
	lines[p],=ax.plot(*line(*[ρ[k]*np.cos(φ[k]) for k in ['e',p]],*[ρ[k]*np.sin(φ[k]) for k in ['e',p]],np.linspace(0,1)),'b') 
def animate(t):
	for k in ['e', 'm']:
		planets[k].set_ydata(ρ[k]*np.sin(t*ω[k]+φ[k]))
		planets[k].set_xdata(ρ[k]*np.cos(t*ω[k]+φ[k]))
		
		if k!='e':

			lin=line(*[ρ[p]*np.cos(t*ω[p]+φ[p]) for p in ['e',k]],*[ρ[p]*np.sin(t*ω[p]+φ[p]) for p in ['e',k]],np.linspace(0,10000))
			
			lines[k].set_xdata(lin[0])
			lines[k].set_ydata(lin[1])
	

	return planets,

ax.fill_between(np.linspace(-sky,sky),np.sqrt(sky**2-np.linspace(-sky,sky)**2),10+0.*np.linspace(-sky,sky),facecolor='b')
ax.fill_between(np.linspace(-sky,sky),-10+0.*np.linspace(-sky,sky),-np.sqrt(sky**2-np.linspace(-sky,sky)**2),facecolor='b')
ani = animation.FuncAnimation(fig, animate,t, 
    interval=25)
ax.legend(numpoints=1)
ani.save('mars-gibanje.mp4', fps=30, writer='ffmpeg',dpi=300)
fig= plt.figure(figsize=(6,6))
ax=fig.add_subplot(111)
fig.patch.set_visible(False)
ax.axis('off')
ax.set_xlim(-5,5)
ax.set_ylim(-5,5)
for k in ['e', 'v']:
	ax.plot(ρ[k]*np.cos(np.linspace(0,2*π)), ρ[k]*np.sin(np.linspace(0,2*π)),'k')
	planets[k], = ax.plot(ρ[k]*np.cos(φ[k]), ρ[k]*np.sin(φ[k]),'o',label=imena[k],color=color[k])
ax.plot(sky*np.cos(np.linspace(0,2*π)), sky*np.sin(np.linspace(0,2*π)),'b')
ax.plot(0,0,'yo',label='Sunce')
def line(ax,bx,ay,by,t):
	return [bx*t+(1-t)*ax,by*t+(1-t)*ay]
for p in ['v']:
	lines[p],=ax.plot(*line(*[ρ[k]*np.cos(φ[k]) for k in ['e',p]],*[ρ[k]*np.sin(φ[k]) for k in ['e',p]],np.linspace(0,1)),'b') 
def animate(t):
	for k in ['e', 'v']:
		planets[k].set_ydata(ρ[k]*np.sin(t*ω[k]+φ[k]))
		planets[k].set_xdata(ρ[k]*np.cos(t*ω[k]+φ[k]))
		
		if k!='e':

			lin=line(*[ρ[p]*np.cos(t*ω[p]+φ[p]) for p in ['e',k]],*[ρ[p]*np.sin(t*ω[p]+φ[p]) for p in ['e',k]],np.linspace(0,10000))
			
			lines[k].set_xdata(lin[0])
			lines[k].set_ydata(lin[1])
	

	return planets,

ax.fill_between(np.linspace(-sky,sky),np.sqrt(sky**2-np.linspace(-sky,sky)**2),10+0.*np.linspace(-sky,sky),facecolor='b')
ax.fill_between(np.linspace(-sky,sky),-10+0.*np.linspace(-sky,sky),-np.sqrt(sky**2-np.linspace(-sky,sky)**2),facecolor='b')
ax.legend(numpoints=1)

ani = animation.FuncAnimation(fig, animate,t, 
    interval=25)
ani.save('venera-gibanje.mp4', fps=30, writer='ffmpeg',dpi=300)