Вы находитесь на странице: 1из 4

' posicion de la luna cap 47 pag 337

cls

'Antonio Martinez
cls
'calculamos el valor de pi y el coeficiente ra que pasa grados
'a radianes
pi=4*atn(1):ra=2*pi/360
b$="###.######"

a=1992:m=4:d=12
'a=1972:m=3:d=6
print "Fecha de ejemplo: año ";a;" mes ";m;" dia ";d;" ";
'print "Si d es un numero fraccionario indica la fraccion decimal de ese dia"
'print "a partir de las 00.00 h, es decir la media noche. Un dia con fraccion"
'print "de 0.5 dara dias julianos enteros pues estos se miden desde las"
'print "12.00 del medio dia."

'print "si m fuese 1 o 2 hacemos m=m+12 y a=a-1"


an=a:me=m
if m<3 then
m=m+12
a=a-1
end if
A=int(a/100)
B=2-A+int(A/4)
dj = int(365.25 * (a + 4716)) + int(30.6001 * (m+1)) + d + B - 1524.5
'si queremos hacer el calculo con un dj determinado como dato, lo ponemos aqui
'dj=2448976.5
'dj=2448908.5
'................................

print "Dia Juliano JDE = ";dj;" dias"


'..............
t=(dj-2451545)/36525
print "Nº de periodos de 36525 dias desde la epoca J2000 1.5/1/2000 T = ";
print using (b$,t);" centurias"
'...................
lml=218.3164477+481267.88123421*t-0.0015786*t^2+(t^3)/538841-(t^4)/65194000:call
cuadrante lml
print "longitud media de la luna (equinocio medio de la centuria t) L'= ";using
(b$,lml);" g"
'........................
Eml=297.8501921+445267.1114034*t-0.0018819*t^2+(t^3)/545868-(t^4)/113065000:call
cuadrante Eml
print "Elongacion media de la luna D = ";using
(b$,Eml);" g"
'......................
Ams=357.5291092+35999.0502909*t-0.0001536*t^2+(t^3)/24490000:call cuadrante Ams
print "Anomalia media del sol M = ";using
(b$,Ams);" g"
'..............
Aml=134.9633964+477198.8675055*t+0.0087414*t^2+(t^3)/69699-(t^4)/14712000:call
cuadrante Aml
print "Anomalia media de la luna M'= ";using
(b$,Aml);" g"
'..............
print "Argumento de latitud de la luna ";
All=93.2720950+483202.0175233*t-0.0036539*t^2-(t^3)/3526000+(t^4)/863310000
call cuadrante All
print " F = ";using (b$,All);" g"
'..............
a1=119.75+ 131.849*t : call cuadrante a1
print "Argumento a1=119.75+ 131.849*t A1= ";using
("###.##",a1);" g"
a2= 53.09+479264.290*t : call cuadrante a2
print " a2= 53.09+479264.290*t A2= ";using
("###.##",a2);" g"
a3=313.45+481266.484*t : call cuadrante a3
print " a3=313.45+481266.484*t A3= ";using
("###.##",a3);" g"

'Adicion a la longitud por efecto de Venus y Jupiter


ad.lo=3958*sin(a1*ra)+1962*sin((lml-All)*ra)+318*sin(a2*ra) 'call cuadrante
ad.lo
'Adicion a la latitud
ad.la=-2235*sin(lml*ra)+382*sin(a3*ra)+175*sin((a1-All)*ra)+175*sin((a1+All)*ra)
+127*sin((lml-Aml)*ra)-115*sin((lml+Aml)*ra) 'call cuadrante ad.la
'..............

ee=1-0.002516*t-0.0000074*t^2
print "Coeficiente de la excentricidad de la orbita de la Tierra E = ";using
(b$,ee)
open "luna.dat" for input as#1

su.l=0
su.r=0
input #1, a$
dim co (7)

for tt=1 to 60
for n=1 to 7
input #1, co(n)
next n
arg=co(2)*Eml+co(3)*Ams+co(4)*Aml+co(5)*All 'call cuadrante arg
'if t<8 then print "Argumento del sumando ";t;"
arg=co(2)*Eml+co(3)*Ams+co(4)*Aml+co(5)*All = ";arg
l=co(6)*sin(arg*ra)
if abs(co(3))=1 then l=l*ee
if abs(co(3))=2 then l=l*ee^2
'call cuadrante l
'if t<8 then print "Sumando de longitud del termino periodico ";t;"
l=co(6)*sin(arg*ra) = ";using ("########",l)
su.l=su.l+l
r=co(7)*cos(arg*ra)
'if t<8 then print "Sumando de distancia del termino periodico ";t;"
r=co(7)*cos(arg*ra) = ";r
if abs(co(3))=1 then r=r*ee
if abs(co(3))=2 then r=r*ee^2
su.r=su.r+r
next tt
su.l=su.l+ad.lo
print "Suma de terminos periodicos de longitud #l = ";using
("#########",su.l);" "
print " de distancia #r = ";using
("#########",su.r);" "

su.la=0
input #1, a$,a$

for tt=1 to 60
for n=1 to 5
input #1, co(n)
next n
arg=co(1)*Eml+co(2)*Ams+co(3)*Aml+co(4)*All
la=co(5)*sin(arg*ra)
if abs(co(2))=1 then la=la*ee
if abs(co(2))=2 then la=la*ee^2
su.la=su.la+la
next tt
su.la=su.la+ad.la
print " de latitud #b = ";using
("#########",su.la);" "
print
"-------------------------------------------------------------------------------
---------------"

l.l=lml+su.l/1000000 : call cuadrante l.l


print "longitud de la luna lon = ";using (b$,l.l);:
call gms l.l
'....................
la.l=su.la/1000000 : call cuadrante la.l
print "latitud de la luna lat = ";using (b$,la.l);:
call gms la.l
'....................
d.l=385000.56+su.r/1000
print "distancia a la luna dis = ";using
("########.#",d.l);" km"
'....................
l.n.a=125.04452-1934.136261*t+0.0020708*t^2+(t^3)/450000 :call cuadrante l.n.a
print "Longitud del nodo ascendente de la Luna ";using(b$,l.n.a)
L=280.4665+36000.7698*t : call cuadrante L
print "Longitud media del sol ";using(b$,L)
L1=218.3165+481267.8813*t :call cuadrante L1
print "Longitud media de la luna ";using(b$,L1)

print "Nutacion en longitud ";


l.nu=-17.20*sin(l.n.a*ra)-1.32*sin(2*L*ra)-0.23*sin(2*L1*ra)
+0.21*sin(2*l.n.a*ra)
l.nu.g=l.nu/3600 : print using(b$,l.nu);" '' = ";using("#.######",l.nu.g)
l.a.l=l.l+l.nu.g
print "Longitud aparente ";using(b$,l.a.l);" ";: call gms l.a.l

'print "Nutacion en oblicuidad ";


o.nu=9.20*cos(l.n.a*ra)+0.57*cos(2*L*ra)+0.10*cos(2*L1*ra)-0.09*cos(2*l.n.a*ra)
'print o.nu
U=t/100
e.o=23*3600+26*60+21.448-4680.93*U-1.55*U^2+1999.25*U^3-51.38*U^4-249.67*U^5-
39.05*U^6+7.12*U^7+27.87*U^8+5.79*U^9+2.45*U^10
o.e=e.o/3600+o.nu/3600
print "oblicuidad de la ecliptica ";using(b$,o.e);" ";:call gms o.e
print ".................................................................."
print "Coordenadas ecuatoriales"
A.r.a=atn((sin(l.a.l*ra)*cos(o.e*ra)-
tan(la.l*ra)*sin(o.e*ra))/cos(l.a.l*ra))*(180/pi)+180
print "Ascension recta aparente ";using(b$,A.r.a);" ";:call hms A.r.a
d.e.a=asn(sin(la.l*ra)*cos(o.e*ra)
+cos(la.l*ra)*sin(o.e*ra)*sin(l.a.l*ra))*(180/pi)
print "Declinacion ecuatorial aparente ";using(b$,d.e.a);" ";:call gms
d.e.a

'print "paralaje ecuatorial horizontal peh=asn(6378.14/d.l)/ra = ";


'peh=asn(6378.14/d.l)/ra :call cuadrante peh : print using (b$,peh);" "
close #1
end

'.................
sub cuadrante byref k
if k<0 then
do: k=k+360: loop until k>0
end if

if k>360 then
do: k=k-360: loop until k<360
end if
end sub
'...........

sub gms byref k


g=int(k)
m.d=(k-g)*60 : m=int(m.d)
s=int((m.d-m)*60)
print " ";g;"º ";m;"' ";s;"''"
end sub

sub hms byref k


h.d=k/15
h=int(h.d)
m.d=(h.d-h)*60 : m=int(m.d)
s=int((m.d-m)*60)
print " ";h;"h ";m;"m ";s;"s"
end sub

Вам также может понравиться