'regio.bas
'Este programa produce una Tabla de Casas por el sistema de Regiomontano que se graba en un 'fichero con el nombre Regiomon.doc. Este fichero puede abrirse con cualquier procesador de 'textos.
'Las instrucciones utilizadas en el codigo son de Basic y pueden ser facilmente traducibles a 'cualquier lenguaje de programacion.
'Se producen las longitudes de las Casas 10, 11, 12, 1, 2 y 3, las otras no son necesarias pues basta con añadirles 6 signos.
cls
pi=3.14159296535
cdr= pi/180
gecl=23:mecl=27:secl=15
obl=(gecl+mecl/60+secl/3600)*cdr
'print tan(105/cdr)
'input rrr
dim z(12)
dim p(12)
dim v(12)
dim x(12)
dim y(12)
dim l(12)
dim sic(12)
dim sic$(12)
dim gr(12)
dim mi(12)
dim po$(12)
open "regiomon.doc" for output as #1
for si=1 to 12
for grado=0 to 29
g=grado
gr=int(g)
l=(si-1)*30+g 'l=longitud del medio cielo
ss=si:gosub signos:si$=ss$ 'signo del MC en letra
ra=atn(tan(l*cdr)*cos(obl))/cdr 'ascension recta en grados
if ra<0 then ra=ra+360
if ra>360 then ra=ra-360
if l=0 then ra=0.0001
if l=90 then ra=90
if l>90 and l<270 then ra=ra+180
if l=180 then ra=180
if l=270 then ra=270
if l>270 then ra=ra+360
if l>360 then ra=ra-360
if l=360 then ra=360
rag=int(ra):ram=(ra-rag)*60 ' ascension recta en grados y minutos
st=ra*24/360 ' st=hora sideral
' h.s. en horas,minutos y segundos
sth=int(st)
stmm=(st-sth)*60 :stm=int(stmm)
stss=(stmm-stm)*60:sts=cint(stss)
'for la=22 to 37
la=22
' como ejemplo se crean las Casas para la latitud 22N, basta con sustituir este valor para
' crear la tabla de otra latitud. Tambien puede introducirse un bucle para varias latitudes
' ver la linea anterior donde se crea un bucle de 22 a 37 grados de latitud.
lat=la*cdr
for n=1 to 12 ' bucle de las 12 casas
z(n)=60+n*30 : if z(n)>360 or z(n)=360 then z(n)=z(n)-360
p(n)=atn(tan(z(n)*cdr)*cos(lat))/cdr
sz=sin(z(n))
cz=cos(z(n))
if sz>0 and cz<0 then l(n)=l(n)+180 ' cuadrante 2
if sz<0 and cz<0 then l(n)=l(n)+180 ' cuadrante 3
if sz<0 and cz>0 then l(n)=l(n)+360 ' cuadrante 4
if n<7 then then p(n)=p(n)-180
if p(n)<0 then p(n)=p(n)+360
v(n)=sin(p(n)*cdr) * sin(lat) * sin(obl)
x(n)=cos(ra*cdr+z(n)*cdr) * cos(lat) * cos(obl)- v(n)
y(n)=sin(ra*cdr+z(n)*cdr) * cos(lat)
t=y(n)/(x(n))
l(n)=atn(t)/cdr
if y(n)>0 and x(n)<0 then l(n)=l(n)+180
if y(n)<0 and x(n)<0 then l(n)=l(n)+180
if y(n)<0 and x(n)>0 then l(n)=l(n)+360
if l(n)<0 then l(n)=l(n)+360
if l(n)>360 then l(n)=l(n)-360
sic(n)=int(l(n)/30)+1 'signo de la Casa
ss=sic(n):gosub signos:sic$(n)=ss$
gc=l(n)-30*(sic(n)-1):gr(n)=int(gc)
m=(gc-gr(n))*60:mi(n)=cint(m)
next n
if g=0 then
print #1, "Tabla de Casas de Regiomontano. Alba de Hermes"
print #1, " C10 AR HS"
print #1, " s g gr mi h m s Lo Casa11 Casa12 Casa 1 Casa 2 Casa 3"
end if
print #1, using "\ \ ## ### ##,.# ## ## ## ## ##\\## ##\\## ##\\## ##\\## ##\\##";_
si$;g;rag;ram;sth;stm;sts;la;_
gr(11);sic$(11);mi(11);gr(12);sic$(12);mi(12);gr(1);_
sic$(1);mi(1);gr(2);sic$(2);mi(2);gr(3);sic$(3);mi(3)
' next la
next grado
next si
close #1
end
signos:
select case ss
case 1: ss$="ar"
case 2: ss$="ta"
case 3: ss$="ge"
case 4: ss$="cn"
case 5: ss$="le"
case 6: ss$="vi"
case 7: ss$="li"
case 8: ss$="es"
case 9: ss$="sa"
case 10:ss$="cp"
case 11:ss$="ac"
case 12:ss$="pi"
end select
return
sub s
while inkey$=""
wend
end sub
Comentarios
Publicar un comentario
Albadhermes publica todos los comentarios recibidos aunque no se identifique con su contenido.