cls
d1$=" ## ## ## ## "
d2$=" MC ## ## ## "
pi#=4*atn(1)
a#=2*pi#/360
ce#=(23+27/60)*a# ' constante ecliptica en radianes
input "Horasideral ",hs$
'hs$="163913"
hs=val(left$(hs$,2))+(val(mid$(hs$,3,2)))/60+(val(right$(hs$,2)))/3600
input "latitud ",la$
la=val(left$(la$,2))+(val(mid$(la$,3,2)))/60+(val(right$(la$,2)))/3600
if la>60 then la=60
x=hs*360/24
print "Hora sideral en grados ";x
' calculo del medio cielo
aa=x+2.5*2*sin(x*a#)*(cos(x*a#))
a0=aa
gosub signos
print using d2$;s+1;g;m
'ascendente a 0 grados
'primera correccion
x0=x-2.5*2*sin(x*a#)*(cos(x*a#))
aa=x0
g0=x0+3*30
gosub signos
print " Ascendnte"
print "Latitud Signo Grado Minuto"
print using d1$;0;s+4;g;m
open "casadato.dat" for input as #1
input #1, nd
for n=1 to nd
' g0a=g0p
g2a=g2p
g4a=g4p
g5a=g5p
g6a=g6p
ha =hp 'hacemos igual la hora anterior a la posterior leida antes
input #1, ht$ 'hora sideral de la tabla de datos
ht=val(left$(ht$,2))+(val(mid$(ht$,3,2)))/60+(val(right$(ht$,2)))/3600
input #1, g0$ ' grado 0
' g0=val((left$(g0$,2))-1)*30+(val(mid$(g0$,3,2)))+(val(right$(g0$,2)))/60
input #1, g2$ ' grado 20
g2=(val(left$(g2$,2))-1)*30+(val(mid$(g2$,3,2)))+(val(right$(g2$,2)))/60
input #1, g4$ ' grado 40
g4=(val(left$(g4$,2))-1)*30+(val(mid$(g4$,3,2)))+(val(right$(g4$,2)))/60
input #1, g5$ ' grado 50
g5=(val(left$(g5$,2))-1)*30+(val(mid$(g5$,3,2)))+(val(right$(g5$,2)))/60
input #1, g6$ ' grado 60
g6=(val(left$(g6$,2))-1)*30+(val(mid$(g6$,3,2)))+(val(right$(g6$,2)))/60
' g0p=g0
' if g0p<g0a then g0p=g0p+12*30
g2p=g2
if g2p<g2a then g2p=g2p+12*30
g4p=g4
if g4p<g4a then g4p=g4p+12*30
g5p=g5
if g5p<g5a then g5p=g5p+12*30
g6p=g6
if g6p<g6a then g6p=g6p+12*30
hp=ht ' hacemos igual la hora posterior a la hora leida en ese momento
' si la hora sidral esta comprendida entre dos consecutivas de la tabla
' podemos hacer el calculo de interpolacion con esos dos datos.
if hs>=ha and hs<=hp then
' call inter(g0a,g0p,hp,ha,hs)
' a0=aa
aa=g0
a0=g0
gosub signos
print "Ascendente a 0 grados ";aa$
call inter(g2a,g2p,hp,ha,hs)
a2=aa
print "Ascendente a 20 grados ";aa$
call inter(g4a,g4p,hp,ha,hs)
a4=aa
print "Ascendente a 40 grados ";aa$
call inter(g5a,g5p,hp,ha,hs)
a5=aa
print "Ascendente a 50 grados ";aa$
call inter(g6a,g6p,hp,ha,hs)
a6=aa
print "Ascendente a 60 grados ";aa$
if la<=20 then call inter(a0,a2,20,0 ,la)
if la>20 and la<=40 then call inter(a2,a4,40,20,la)
if la>40 and la<=50 then call inter(a4,a5,50,40,la)
if la>50 then call inter(a5,a6,60,50,la)
al=aa
print "-------------------------------------"
print "ASCENDENTE A";int(la);"GRADOS ";aa$
goto fuera
end if
next n
close #1
fuera:
end
sub inter(ga,gp,p,a,s)
shared gs,aa$,aa
i=p-a
if abs(gp)<=abs(ga) then aa=((ga-gp)*(p-s))/i+gp
if abs(gp)> abs(ga) then aa=((gp-ga)*(s-a))/i+ga
if aa>12*30 then aa=aa-12*30
call s
gosub signos
end sub
signos:
s=int(aa/30) ' signo
g1=(aa-s*30)
g=int(g1) ' grado
m=int((g1-g)*60) ' minuto
aa$=str$(s+1)+str$(g)+str$(m)
return
sub s
while inkey$="":wend
end sub
No hay comentarios:
Publicar un comentario