jueves, 17 de abril de 2014

Ascendente y Medio Cielo

El primer paso para levantar un horóscopo es conocer el Ascendente y el Medio Cielo. El cálculo varía según se trate de longitud Este u Oeste del meridiano de Greenwich.
El Ascendente simboliza la personalidad, la imagen corporal y los procesos mentales.
El Medio Cielo representa la profesión, la imagen pública, el pariente mas influyente en la vida del individuo.

Programa escrito en BASIC que calcula automáticamente la longitud del Medio Cielo y del Ascendente:

'datos de un ejemplo que pueden ser sustituidos por otros
hs$="18:04:22":la$="51N00"
' En este ejemplo se ha tomado una hora sideral de 18h, 4m y 2s, y una latitud de 51 grados, norte.
'Buscamos los valores dados por las tablas de Dalton para el Medio Cielo (meci$) y para el Ascendente (asce$), y los anotamos para comprobar despues que nuestros calculos son correctos.
meci$=" 1(10)":asce$=" 2( 1)33"
' En estas tablas se indica el signo con su simbolo, pero para hacer los calculos sustituimos el simbolo por un numero entre parentesis, empezando en aries que es el nº 1 y terminando en piscis que es el numero 12. Delante del parentesis se pone el numero de grados dentro del signo y despues del parentesis , los minutos.

'..................
' Empezamos por borrar la pantalla del ordenador con la instruccion cls
cls
' A continuacion damos el valor de la ecliptica. Esto puede hacerse mas esactramente con la formula que la relaciona con el año en que estamos, pero para estos calculos es suficiente con este valor aproximado.

e$="23:28:00"
'Ahora damos el valor de la constante "pi". Podriamos ponerla por su valor numerico aproximado 3.141592, pero esta otra forma de ponerlo es mas esacta: es el producto de 4 por el arco cuya tangente vale 1.
pi=4*atn(1)
' a continuacion creamos la variable "gr", que nos sera de ayuda para transformar los grados en radianes y los radianes en grados. Como un circulo completo tiene 360 grados o bien 2*pi radianes, el cociente entre estos dos valores sera el factor de conversion. Esto es necesario en todos los programas informaticos pues los datos se dan en grados y los calculos se hacen en radianes.
gr=2*pi/360

'......................
' Transformamos el dato inicial de la hora sideral que viene dado como un texto (hs$) por su valor numerico (hs), para ello vamos leyendo sus componentes, las dos primeras cifras son horas, las dos del centro son minutos y las dos ultimas son segundos. Las transformamos en horas, para ello las dos primeras se dejan como estan pues son horas, las dos del cenntro se dividen por 60 y las dos ultimas se dividen por 3600 ( es decir 60x60).
hs= val(left$(hs$,2))+val(mid$(hs$,4,2))/60+val(right$(hs$,2))/3600
' si el valor de hs fuese precisamente 24, lo transformamos en cero, pues es un circulo horario completo.
if hs=24 then hs=0
' Hacemos lo mismo que hicimos con la hora sideral con la latitud y la declinacion de la ecliptica y las ponemos en grados con decimales
la=val(left$(la$,2))+val(right$(la$,2))/60
e#=val(left$(e$,2))+val(mid$(e$,4,2))/60+val(right$(e$,2))/3600

................' Ahora calculamos la ascension recta del medio cielo (armc) que no es sino la hora sideral expresada en grados:

armc=hs*360/24
' A partir de aqui es facil calcular ella longitud del Medio Cielo a partir de esta formula:
tan(MC)=tan(armc)/cos(e)
De aqui se deduce que la longitud del MC sera el arco cuya tangente (atn) es ese cociente:
MC=atn(tan((armc)*gr)/cos(e#*gr))/gr
' Se dividio por el factor de conversion gr para pasar los radianes a grados.
' Ahora ajustamos el resultado a los cuadrantes:if MC<0 mc="MC+360
MC=MC+180
if MC>=360 then MC=MC-360

if hs>=0 and hs=<6 mc="MC-180
if hs>18 and hs=<24 mc="MC+180
' Con esto hemos terminado el calculo del Medio Cielo y podemos pasar al calculo del Ascendente.
'................
' Los primero es calcular la ascension oblicua del ascendente (a), para ello basta con añadir 90 grados a la scension recta del medio cielo.
a=armc+90
' y ajustamos los cuadrantes:
if a= 90 then a= 90.0010
if hs=12 and a=270 then a=270.0026
if a=270 then a=270.0001
if a>=360 then a=a-360
' calculamos la variable auxiliar AAAA= (atn((tan(la*gr))/cos(a*gr)))/gr
' con ella calculamos la longitud del ascendente H1H1=(atn(tan(a*gr)*cos(AA*gr)/cos((AA+e#)*gr)))/gr
' y ajustamos el resultado al cuadrante:
if H1<0>12 then H1=H1+180
if H1<0 h1="H1+360
H1=H1+180
if H1>=360 then H1=H1-360
if hs>=18 then H1=H1-180

'.................. 
'Ahora bastara con transformar los resultados en el formato de grados, minutos y segundos:call trans(H1,H1$)
call trans(MC,MC$)
' y ya podemos imprimir los resultados y compararlos con los que anotamos desde las tablas de Dalton u otra cualquiera y asi comprobar que los resultados son correctos:
print "latitud: ";la$;" hora sideral: ";hs$
d$= "\ \ ###,.## \ \ \ \"
print using d$;"Medio Cielo ";MC;MC$;meci$
print using d$;"Ascendente ";H1;H1$;asce$

end

'..................
sub trans(x,x$)

s=int(x/30)+1
ga=x-(s-1)*30:g=int(ga)
m=cint((ga-g)*60)
if m=60 then m=0:g=g+1
if g=30 then g=0:s=s+1
if s=13 then s=1
x$=str$(g)+"("+str$(s)+")"+str$(m)

end sub