""" simulazione dell'orbita della Terra intorno al Sole gravitaz.lancio(1.5E11,0,0,29850,32) Prima traccia in nero l'orbita ottenuta con le leggi di Newton poi la confronta (in rosso) con l'equazione dell'ellisse """ from gf11 import Scala import math def ellisse(a,b,sc): # ellisse traslata con l'origine in uno dei due fuochi c = math.sqrt(a**2-b**2) sc.up() x = -a sc.goto(sc.Nx(x+c), sc.Ny(0)) sc.down() while x<= a: y = b/a*math.sqrt(a**2-x**2) sc.goto(sc.Nx(x+c),sc.Ny(y)) x = x+1 x = a while x>= -a: y = -b/a*math.sqrt(a**2-x**2) sc.goto(sc.Nx(x+c),sc.Ny(y)) x= x-1 sc.goto(sc.Nx(-a+c), sc.Ny(0)) sc.up() sc.goto(sc.Nx(0), sc.Ny(0)) sc.down() def cubod(x,y): return (x*x+y*y)*math.sqrt(x*x+y*y) def lancio(x,y,vx,vy, tempo,sc): GMS = 1.9991E30*6.6732E-11 # costante di gravitazione universale per massa Sole unita' SI k = 3/2E9 # fattore di scala tmax = tempo*1E6 # tempo in milioni di secondi xiniz = x deposito = -10 t = 0 dt = 6000 # sc.assi() sc.up() sc.aspos(k*x,k*y) # sc.down() sc.left(90) while t < tmax: ax = -(GMS*x)/cubod(x,y) ay = -(GMS*y)/cubod(x,y) vx = vx+ax*dt vy = vy+ay*dt x = x+vx*dt y = y+vy*dt sc.aspos(k*x,k*y) if x