Cálculo de las líneas horarias para un reloj de Sol declinante



     Este programa no es mio. Es de William S. Maddux y lo tengo hace muchos años en mi librería de programas; yo sólo he puesto los textos en español, he corregido un pequeño error matemático y he decidido que los resultados salgan por la impresora en lugar de escribirse en la pantalla.

9 REM Reloj de Sol Declinante

10 OPEN "lpt1" FOR OUTPUT AS  #2

11 INPUT "¿Latitud Norte del lugar (en grados)"; b: IF b < 0 THEN 11
12 INPUT "¿Longitud del lugar (desde Greenwhich hacia el Oeste)"; l
13 INPUT "¿Meridiano central del huso horario (en grados)"; l0
14 INPUT "¿Azimut de la pared (Norte A=0)"; f
15 IF f <= 0 OR f >= 270 THEN 14
16 pi = 3.14159265#: rl = pi/180
17 bl = b*rl: s = 0
18 INPUT "¿Líneas de mañana o de tarde"; s$
19 IF s$ = "mañana" THEN s = -1
20 IF s$ = "tarde" THEN s = 1
21 IF s = 0 THEN 18
22 INPUT "¿Altura del reloj"; hs
23 INPUT "¿Anchura de la mitad del reloj"; ws
24 INPUT "Tiempo entre líneas (en minutos)"; g

25 fl = pi/2 + s*rl*(180 - f): PRINT #2, ""
26 rs = ws/hs: zs = s*rl*(l0 - l)

27 PRINT #2, "Latitud = "; b; ", Longitud = "; l
28 PRINT #2, "Meridiano central = "; l0
29 PRINT #2, "Azimut de la pared = "; f
30 GOSUB 73
31 PRINT #2, "Sol de la "; s$
32 PRINT #2, "Reloj de "; ws; " de ancho por "; hs; " de alto": PRINT #2, ""
33 h = 12 - s: g = s*g/60

35 REM cálculo de las líneas
36 q = zs*s*pi*(h - 12)/12
37 IF q < 0 THEN 47
38 IF h < 4 OR h > 20 THEN 48
39 IF q <> 0 THEN 41
40 k = 0: GOTO 45
41 ko = SIN(fl)*TAN(pi/2 - q)
42 kl = COS(fl)*SIN(bl) + ko
43 IF kl = 0 THEN kl = 1*E-10
44 k = COS(bl)/kl
45 GOSUB 52
46 IF k >= 0 THEN GOSUB 57
47 h = h + g: GOTO 35

48 PRINT #2, ""
49 INPUT "¿Otra vez? (s o n)"; q$
50 s = 0: IF q$ = "s" THEN 18
51 END

52 REM cálculo de X o de Y
53 d = s*k*hs: d$ = " X = "
54 IF k < rs THEN 56
55 d = -ws/k: d$ = " Y = "
56 RETURN

57 REM dibujo de las líneas
58 ho = h + .002
59 hl = INT(ho): ml = INT(60*(ho-hl))
60 ml$ = STR$(1000 + ml)
61 ml$ = ":" + RIGHT$(ml$, 2)
62 p$ = " PM "
63 IF hl < 12 THEN p$ = " Mañana"
64 IF hl <> 12 THEN 66
65 IF ml = 0 THEN p$ = " Mediodía"
66 IF hl > 12 THEN hl = hl - 12
67 hl$ = STR$(hl)
68 IF hl < 10 THEN hl$ = " " + hl$
69 d = INT(d*1000 + .5)/1000

70 PRINT #2, hl$; ml$; p$;
71 PRINT #2, TAB(15); d$; d
72 RETURN

73 REM cálculo de la punta del estilo
74 ps = TAN(pi/2 - bl)*hs
75 z = SIN(fl)*ps
76 z = INT(z*1000 + .5)/1000
77 x = s*TAN(pi/2 - fl)*z
78 x = INT(x*1000 + .5)/1000
79 y = -hs
80 PRINT #2, "Coordenadas de la punta del estilo: "
81 PRINT #2, " X = "; x; " Y = "; y; " Z = "; z
82 RETURN


Volver a Relojes de Sol | | Ir a Astronomía