Newsgroup: it.scienza.astronomia.amatoriale
Titolo: Spero possa tornare utile a qualcuno

Attribute VB_Name = "AstroLibreria"
Private Const pi = 3.14592654
Private Const pix2 = 6.28318531
Private Const pi_2 = 1.57079633
'-25.8 arc/sec^2 è il fattore correttivo della nutazione
' suggerita dal JPL
Private Const nut = -25.8
'Le date se non indicate diversamente sono in formato GG/MM/AAAA
'Conversione da gradi a radianti
Private Function grd_rad(deg) As Single
    grd_rad = deg * 0.01745329
End Function
'Conversione da radianti a gradi
Private Function rad_grd(rad) As Single
    rad_grd = rad * 57.2957795
End Function
'calcola l'arcotangente nel giusto quadrante
Private Function arg(y As Single, x As Single)
   If x < 0 Then
        arg = Atn(y / x) + pi
   End If
   If x > 0 And y > 0 Then
        arg = Atn(y / x)
   End If
   If x > 0 And y < 0 Then
        arg = pix2 + ATan(y / x)
   End If
   'x = 0
   If y > 0 Then
        arg = pi_2
   End If
   If y < 0 Then
        arg = 3 * pi_2
   End If
   arg = 0#
End Function
' 
http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
'Calcolo del Tempo Siderale Locale.
'Il giorno siderale  è dato dal passaggio di una stessa stella sullo
'stesso meridiano e corrisponde ad una rotazione completa del nostro pianeta
'sull'asse.
'Poiché il Sole, per via del moto della Terra lungo l'orbita, sembra 
muoversi
'relativamente alle stelle, il giorno siderale dura 3 minuti e 56 
secondi meno del giorno solare.
  Function TSL(A As Integer, M As Integer, G As Integer, TU As Single, 
lg As Single) As Double
'A = anno
'M = mese (1-12)
'G = giorno (1-31).
'TU = tempo universale solare = ora media del meridiano di Greenwich (GMT)
'     Il Sole medio è un sole ipotetico, che descrive l'orbita 
sull'equatore celeste
'     ed i cui passaggi per i punti equinoziali corrispondano con quelli 
del Sole reale.
'     Per passare al TU  dall'ora italiana basta quindi togliere 1 ora
'     ( 2 quando è in vigore l'ora legale ).
'     1 ora di TU corrisponde a 15 gradi.
'lg = longtudine (in gradi) della propria posizione + se Est  e - se Ovest.
   Dim ng As Double
   'numero  di giorni dalle 00:00 del 1/1/2000
   '00:00 1/1/2000 = 2451544,5 giorni dalla fondazione del calendario 
giuliano (4/10/1582)
   ng = 367 * A - Int(7 * (A + Int((M + 9) / 12))) / 4 + Int(275 * M / 
9) + G - 730530 + TU / 24
   'il valore è in gradi
    TSL = 98.9818 + 0.98564735 * ng + TU * 15 + lg
End Function
'Conversione da coordinate equatoriali ad azimut.
  Function azimuth(TSL As Single, lt As Single, AR As Single, Dc As 
Single) As Single
'TSL = tempo siderale locale (in gradi)
'lt latitudine (in gradi) della propria posizione + se Nord e - se Sud,
'AR è l'ascension retta espressa in ore (1 ora di AR corrisponde a 15 gradi)
'Dc è la declinazione in gradi da -90 (=sud)  a +90 (=nord)
   Dim dn As Single, TSL As Single, AO As Single, lat As Single, Dec As 
Single
   'Angolo Orario (in radianti)
   AO = grd_rad(TSL - AR * 15)
   lat = grd_rad(lt)
   Dec = grd_rad(Dc)
   'L'azimuth è 0 gradi a nord e 90 gradi ad est
    azimuth = 180 + rad_grd(arg(Sin(AO), Cos(AO) * Sin(lat) - Tan(Dec) * 
Cos(lat)))
End Function
'Conversione da coordinate equatoriali ad altezza.
  Function altezza(TSL As Single, lt As Single, AR As Single, Dc As 
Single) As Single
'TSL = tempo siderale locale (in gradi)
'lt latitudine (in gradi) della propria posizione + se Nord e - se Sud,
'AR è l'ascension retta espressa in ore (1 ora di AR corrisponde a 15 gradi)
'Dc è la declinazione in gradi da -90 (=sud)  a +90 (=nord)
   Dim dn As Single, TSL As Single, AO As Single, lat As Single, Dec As 
Single
   'Angolo Orario (in radianti)
   AO = grd_rad(TSL - AR * 15)
   lat = grd_rad(lt)
   Dec = grd_rad(Dc)
'Altezza (in gradi)
    altezza = rad_grd(ASin(Sin(lat) * Sin(Dec) + Cos(lat) * Cos(Dec) * 
Cos(AO)))
End Function
'Azimuth di levata di un astro.
  Function Az_levata(AR As Single, Dc As Single, TSL0 As Single, lt As 
Single) As Single
'AR è l'ascension retta espressa in ore (1 ora di AR corrisponde a 15 gradi)
'Dc è la declinazione in gradi da -90 (=sud)  a +90 (=nord)
'TSL0 = tempo siderale locale alle ore 0 TU (gradi)
'lt = latitudine dell' osservatore (gradi)
   Dim OM As Single, lat As Single, Dec As Single
   'Ora al meridiano (gradi):
   OM = AR * 15 - TSL0
   lat = grd_rad(lt) 'conversione in radianti
   Dec = grd_rad(Dc) 'conversione in radianti
   'Angolo orario (radianti):
   AO = ACos(-1 * Tan(lat) * Tan(Dec))
   'gradi
    Az_levata = OM - rad_grd(AO)
End Function
'Azimuth di tramonto di un astro.
  Function Az_tramonto(AR As Single, Dc As Single, TSL0 As Single, lt As 
Single) As Single
'AR è l'ascension retta espressa in ore (1 ora di AR corrisponde a 15 gradi)
'Dc è la declinazione in gradi da -90 (=sud)  a +90 (=nord)
'TSL0 = tempo siderale locale alle ore 0 TU (gradi)
'lt = latitudine dell' osservatore (gradi)
   Dim OM As Single, lat As Single, Dec As Single
   'Ora al meridiano (gradi):
   OM = AR * 15 - TSL0
   lat = grd_rad(lt) 'conversione in radianti
   Dec = grd_rad(Dc) 'conversione in radianti
   'Angolo orario (radianti):
   AO = ACos(-1 * Tan(lat) * Tan(Dec))
   'gradi
    Az_tramonto OM + rad_grd(AO)
End Function
'
http://maia.usno.navy.mil/conventions.html
'UT0 = tempo universale siderale cioè calcolato a partire dal tempo 
siderale al
'      meridiano 0 (Greenwich).
'UT1 = UT0 compensato del moto irregolare del polo di rotazione della Terra
'      sulla crosta terrestre.
'      TU  = UT1 +- 0,1 secondi
'TAI = tempo atomico internazionale definito come il numero di secondi 
SI dal 1/1/1958
'Un secondo SI (sistema internazionale) è la durata corrispondente alla 
frequenza di una
'risonanza particolare dell'atomo di cesio e corrisponde a 9.192.631.770 
Herz.
'TT = tempo terrestre: è usato per il calcolo delle effemeridi.
'TT = TAI + 32.184 'secondi
'dTT/dTCG = 1-LG,  LG = 6.969290134 * 10^-10
'TCG = Geocentric Coordinate Time
'UTC = tempo universale coordinato
'UT1 = UTC +- 0,9 secondi
'TU =  UTC +- 1 secondo.
'dal  1/1/1999 al 2006:
'   TAI = UTC + 32 secondi
'   tempoGPS = UTC +13 secondi
'dal  1/1/2006:
'   TAI = UTC + 33 secondi
' DeltaT = TT - UT1 in secondi.
' DeltaT = 32.184 + (TAI - UTC) - (UT1 - UTC) in secondi
  Function DeltaT(A As Integer) As Single
'A = anno
   Dim T As Single, DeltaT As Single
   Dim dt(0 To 394) As Single
' 
http://www.phys.uu.nl/~vgent/astro/deltat_aa.dat
dt(0) = 124
dt(1) = 119
dt(2) = 115
dt(3) = 110
dt(4) = 106
dt(5) = 102
dt(6) = 98
dt(7) = 95
dt(8) = 91
dt(9) = 88
dt(10) = 85
dt(11) = 82
dt(12) = 79
dt(13) = 77
dt(14) = 74
dt(15) = 72
dt(16) = 70
dt(17) = 67
dt(18) = 65
dt(19) = 63
dt(20) = 62
dt(21) = 60
dt(22) = 58
dt(23) = 57
dt(24) = 55
dt(25) = 54
dt(26) = 53
dt(27) = 51
dt(28) = 50
dt(29) = 49
dt(30) = 48
dt(31) = 47
dt(32) = 46
dt(33) = 45
dt(34) = 44
dt(35) = 43
dt(36) = 42
dt(37) = 41
dt(38) = 40
dt(39) = 38
dt(40) = 37
dt(41) = 36
dt(42) = 35
dt(43) = 34
dt(44) = 33
dt(45) = 32
dt(46) = 31
dt(47) = 30
dt(48) = 28
dt(49) = 27
dt(50) = 26
dt(51) = 25
dt(52) = 24
dt(53) = 23
dt(54) = 22
dt(55) = 21
dt(56) = 20
dt(57) = 19
dt(58) = 18
dt(59) = 17
dt(60) = 16
dt(61) = 15
dt(62) = 14
dt(63) = 14
dt(64) = 13
dt(65) = 12
dt(66) = 12
dt(67) = 11
dt(68) = 11
dt(69) = 10
dt(70) = 10
dt(71) = 10
dt(72) = 9
dt(73) = 9
dt(74) = 9
dt(75) = 9
dt(76) = 9
dt(77) = 9
dt(78) = 9
dt(79) = 9
dt(80) = 9
dt(81) = 9
dt(82) = 9
dt(83) = 9
dt(84) = 9
dt(85) = 9
dt(86) = 9
dt(87) = 9
dt(88) = 10
dt(89) = 10
dt(90) = 10
dt(91) = 10
dt(92) = 10
dt(93) = 10
dt(94) = 10
dt(95) = 10
dt(96) = 10
dt(97) = 11
dt(98) = 11
dt(99) = 11
dt(100) = 11
dt(101) = 11
dt(102) = 11
dt(103) = 11
dt(104) = 11
dt(105) = 11
dt(106) = 11
dt(107) = 11
dt(108) = 11
dt(109) = 11
dt(110) = 11
dt(111) = 11
dt(112) = 11
dt(113) = 11
dt(114) = 12
dt(115) = 12
dt(116) = 12
dt(117) = 12
dt(118) = 12
dt(119) = 12
dt(120) = 12
dt(121) = 12
dt(122) = 12
dt(123) = 12
dt(124) = 13
dt(125) = 13
dt(126) = 13
dt(127) = 13
dt(128) = 13
dt(129) = 13
dt(130) = 13
dt(131) = 14
dt(132) = 14
dt(133) = 14
dt(134) = 14
dt(135) = 14
dt(136) = 14
dt(137) = 14
dt(138) = 15
dt(139) = 15
dt(140) = 15
dt(141) = 15
dt(142) = 15
dt(143) = 15
dt(144) = 15
dt(145) = 16
dt(146) = 16
dt(147) = 16
dt(148) = 16
dt(149) = 16
dt(150) = 16
dt(151) = 16
dt(152) = 16
dt(153) = 16
dt(154) = 16
dt(155) = 17
dt(156) = 17
dt(157) = 17
dt(158) = 17
dt(159) = 17
dt(160) = 17
dt(161) = 17
dt(162) = 17
dt(163) = 17
dt(164) = 17
dt(165) = 17
dt(166) = 17
dt(167) = 17
dt(168) = 17
dt(169) = 17
dt(170) = 17
dt(171) = 17
dt(172) = 16
dt(173) = 16
dt(174) = 16
dt(175) = 16
dt(176) = 15
dt(177) = 15
dt(178) = 14
dt(179) = 14
dt(180) = 13.7
dt(181) = 13.4
dt(182) = 13.1
dt(183) = 12.9
dt(184) = 12.7
dt(185) = 12.6
dt(186) = 12.5
dt(187) = 12.5
dt(188) = 12.5
dt(189) = 12.5
dt(190) = 12.5
dt(191) = 12.5
dt(192) = 12.5
dt(193) = 12.5
dt(194) = 12.5
dt(195) = 12.5
dt(196) = 12.5
dt(197) = 12.4
dt(198) = 12.3
dt(199) = 12.2
dt(200) = 12
dt(201) = 11.7
dt(202) = 11.4
dt(203) = 11.1
dt(204) = 10.6
dt(205) = 10.2
dt(206) = 9.6
dt(207) = 9.1
dt(208) = 8.6
dt(209) = 8
dt(210) = 7.5
dt(211) = 7
dt(212) = 6.6
dt(213) = 6.3
dt(214) = 6
dt(215) = 5.8
dt(216) = 5.7
dt(217) = 5.6
dt(218) = 5.6
dt(219) = 5.6
dt(220) = 5.7
dt(221) = 5.8
dt(222) = 5.9
dt(223) = 6.1
dt(224) = 6.2
dt(225) = 6.3
dt(226) = 6.5
dt(227) = 6.6
dt(228) = 6.8
dt(229) = 6.9
dt(230) = 7.1
dt(231) = 7.2
dt(232) = 7.3
dt(233) = 7.4
dt(234) = 7.5
dt(235) = 7.6
dt(236) = 7.7
dt(237) = 7.7
dt(238) = 7.8
dt(239) = 7.8
dt(240) = 7.88
dt(241) = 7.82
dt(242) = 7.54
dt(243) = 6.97
dt(244) = 6.4
dt(245) = 6.02
dt(246) = 5.41
dt(247) = 4.1
dt(248) = 2.92
dt(249) = 1.82
dt(250) = 1.61
dt(251) = 0.1
dt(252) = -1.02
dt(253) = -1.28
dt(254) = -2.69
dt(255) = -3.24
dt(256) = -3.64
dt(257) = -4.54
dt(258) = -4.71
dt(259) = -5.11
dt(260) = -5.4
dt(261) = -5.42
dt(262) = -5.2
dt(263) = -5.46
dt(264) = -5.46
dt(265) = -5.79
dt(266) = -5.63
dt(267) = -5.64
dt(268) = -5.8
dt(269) = -5.66
dt(270) = -5.87
dt(271) = -6.01
dt(272) = -6.19
dt(273) = -6.64
dt(274) = -6.44
dt(275) = -6.47
dt(276) = -6.09
dt(277) = -5.76
dt(278) = -4.66
dt(279) = -3.74
dt(280) = -2.72
dt(281) = -1.54
dt(282) = -0.02
dt(283) = 1.24
dt(284) = 2.64
dt(285) = 3.86
dt(286) = 5.37
dt(287) = 6.14
dt(288) = 7.75
dt(289) = 9.13
dt(290) = 10.46
dt(291) = 11.53
dt(292) = 13.36
dt(293) = 14.65
dt(294) = 16.01
dt(295) = 17.2
dt(296) = 18.24
dt(297) = 19.06
dt(298) = 20.25
dt(299) = 20.95
dt(300) = 21.16
dt(301) = 22.25
dt(302) = 22.41
dt(303) = 23.03
dt(304) = 23.49
dt(305) = 23.62
dt(306) = 23.86
dt(307) = 24.49
dt(308) = 24.34
dt(309) = 24.08
dt(310) = 24.02
dt(311) = 24
dt(312) = 23.87
dt(313) = 23.95
dt(314) = 23.86
dt(315) = 23.93
dt(316) = 23.73
dt(317) = 23.92
dt(318) = 23.96
dt(319) = 24.02
dt(320) = 24.33
dt(321) = 24.83
dt(322) = 25.3
dt(323) = 25.7
dt(324) = 26.24
dt(325) = 26.77
dt(326) = 27.28
dt(327) = 27.78
dt(328) = 28.25
dt(329) = 28.71
dt(330) = 29.15
dt(331) = 29.57
dt(332) = 29.97
dt(333) = 30.36
dt(334) = 30.72
dt(335) = 31.07
dt(336) = 31.35
dt(337) = 31.68
dt(338) = 32.18
dt(339) = 32.68
dt(340) = 33.15
dt(341) = 33.59
dt(342) = 34
dt(343) = 34.47
dt(344) = 35.03
dt(345) = 35.73
dt(346) = 36.54
dt(347) = 37.43
dt(348) = 38.29
dt(349) = 39.2
dt(350) = 40.18
dt(351) = 41.17
dt(352) = 42.23
dt(353) = 43.37
dt(354) = 44.49
dt(355) = 45.48
dt(356) = 46.46
dt(357) = 47.52
dt(358) = 48.53
dt(359) = 49.59
dt(360) = 50.54
dt(361) = 51.38
dt(362) = 52.17
dt(363) = 52.96
dt(364) = 53.79
dt(365) = 54.34
dt(366) = 54.87
dt(367) = 55.32
dt(368) = 55.82
dt(369) = 56.3
dt(370) = 56.86
dt(371) = 57.57
dt(372) = 58.31
dt(373) = 59.12
dt(374) = 59.98
dt(375) = 60.78
dt(376) = 61.63
dt(377) = 62.29
dt(378) = 62.97
dt(379) = 63.47
dt(380) = 63.83
dt(381) = 64.09
dt(382) = 64.3
dt(383) = 64.47
dt(384) = 65.8
dt(385) = 66
dt(386) = 67
dt(387) = 68
dt(388) = 68
dt(389) = 69
dt(390) = 70
dt(391) = 70
dt(392) = 71
dt(393) = 72
dt(394) = 73
'For dates before 1620, the JPL Horizons website uses the following 
Delta T relations:
   ' -2999 < A < +948
   If A < 948 Then
     T = (A - 1820) / 100
      DeltaT = 31# * T * T '(sec)
   End If
   If A = 948 Then
      DeltaT = 526.6  '(sec)
   End If
   If 948 < A And A < 1620 Then
     T = (A - 2000) / 100
      DeltaT = 50.6 + 67.5 * T + 22.5 * T * T  '(sec)
   End If
   If A < 2006 Then
     DeltaT = dt(A - 1620)
     If A < 1955 Then
       T = A - 1955
        DeltaT = DeltaT - 0.000091 * (nut + 26#) * T * T
     Else
        DeltaT = DeltaT
     End If
     EDeltaT = (A - 2005) * (dt(394) - dt(393)) + dt(394)
End Function
'UT2 is an even better corrected version of UT0 which accounts for
'    seasonal variations in the Earth's rotation rate and is sometimes
'    used in astronomy.
'DeltaT2 = UT2-UT1  in secondi
  Function DeltaT2(A As Integer, M As Integer, G As Integer, TU As 
Single) As Single
'A = anno
'M = mese (1-12)
'G = giorno (1-31).
'TU = tempo universale solare = ora media del meridiano di Greenwich (GMT)
   Dim T As Single, T2 As Single
   'numero  di giorni dalle 00:00 del 1/1/2000
   T = 367 * A - Int(7 * (A + Int((M + 9) / 12))) / 4 + Int(275 * M / 9) 
+ G - 730530 + TU / 24
   'anni "Besseliani"
   T = 2000# + (T - 0.03) / 365.2422
   'anni "Besseliani" in radianti
   T = pix2 * T
   T2 = T * 2
    DeltaT2 = 0.022 * Sin(T) - 0.012 * Cos(T) - 0.006 * Sin(T2) + 0.007 
* Cos(T2)
End Function
-- 
Riconoscete ciò che è visibile, e ciò che vi è nascosto vi diverrà chiaro

Forse potrebbe anche servire, se ci spiegassi a cosa... ;-)

 Attribute VB_Name = "AstroLibreria"
E' il lavoro di alcune ore e lo distribuisco come public domain


 Forse potrebbe anche servire, se ci spiegassi a cosa... ;-)
E' una librerie visualbasic di funzioni astronomiche ovvimente.


Par visitation du souffle d'en haut, *RS/33*, dans son message du *08 Sep
2007* nous a fait l'honneur d'écrire: 

Bene, finalmente leggo qualcosa di più intelligente che le solite menate.
Hai pensato di segnalarlo anche a Drum su quest'altro NG? Fu creato 
appositamente! Ecco qua:
http://groups.google.it/group/astrosoftware?lnk=gschg&hl=it
So che voleva preparare una pagina Web per semplificare la vita, ma di quella 
persona non ne ho saputo più niente.
Ciao
Eliseo
http://xoomer.alice.it/conoscere.astronomia
-- 
"L'humanité est ce qu'elle est. Le problème n'est pas de la changer, mais de 
la connaître." (Gustave Flaubert)

 Hai pensato di segnalarlo anche a Drum su quest'altro NG?
Dovrei registrarmi su google ed io sono refrattario a dargli
i miei dati personali e non ho voglia di dover gestire un identità 
fittizia in più.


 
Capisco.
Ciao e cmq grazie per esserti manifestato.
Eliseo
