c'è poco da illuminare ...

... Comunque... Sto continuando con l'automazione del mio piccolo osservatorio sotto casa, di cui posto uno screen, e mi servivano delle informazioni su eventi tipo posizione della luna, sunset, sunrise effemeridi ecc.
Ero intenzionato nello scrivere una libreria VB.NET ma poi alla fine mi sono piegato ad utilizzare, visto anche la buona complessità, ASCOM Astrometry e in particolare alcune classi (ASCOM.Utilities ASCOM.Astrometry con EventType) che permette di avere a disposizione praticamente tutto quello che serve per determinare ad esempio il crepuscolo astronomico (e non solo) in modo relativamente semplice per chi ha un pò di dimestichezza con il .Net o C#.
Pur avendo iniziato con AstronomyAlgoritms ho preferito questa strada che mi sembra più efficace.
Posto un frammento del codice, nello specifico sub per ricavare il moonrise e moonset,
saluti Riccardo.
Codice:
Imports ASCOM.Utilities
Imports ASCOM.Utilities.Exceptions
Imports ASCOM.Astrometry
Public Class Form1
Private AstroUtil As ASCOM.Astrometry.AstroUtils.AstroUtils
Private Util As ASCOM.Utilities.Util
Public Sub MoonRiseMoonSet(M_day As Integer, M_Month As Integer, M_Year As Integer, M_Lat As Double, M_Lon As Double, M_TimeZone As Integer)
Dim ListaEventi As ArrayList ' Lista array per memorizzare glie eventi
Dim Evento1, Evento2 As String 'VAriabile per memorizzare il primo e secondo evento
Dim NumberOfRises, NumberOfSets As Integer ' Number of rise and set events
' La riga seguente può essere cambiata per avere diversi evnti come sunrisesunset, crepuscolo astronomico,Pianeti ecc
Const TypeOfEvent As EventType = EventType.MoonRiseMoonSet 'evento sulla Luna
AstroUtil = New AstroUtils.AstroUtils
Evento1 = ""
Evento2 = ""
Try
ListaEventi = AstroUtil.EventTimes(TypeOfEvent, M_day, M_Month, M_Year, M_Lat, M_Lon, M_TimeZone) ' Richiedo gli evnti diponibili per la data passata e per il mio sito che può essere ricavato dalla Calsse
'Ascom telesocpe
Catch ex As InvalidValueException '
ListaEventi = New ArrayList
Catch ex As Exception ' gestione errori
ListaEventi = New ArrayList
End Try
If ListaEventi.Count > 0 Then ' controllo che nell'array siano presenti almeno 1 evento
NumberOfRises = CInt(ListaEventi(1)) ' Ricevo evento Sorgere della Luna
NumberOfSets = CInt(ListaEventi(2)) 'Ricevo evento Tramonto della Luna
If (NumberOfRises > 0) Or (NumberOfSets > 0) Then ' verifico eventi
Select Case NumberOfRises
Case 0 ' Nessun evento
Evento1 = ""
Case 1 ' Ricavo l'evento e lo sposto nella variabile moonrise
Evento1 = RoundHour(ListaEventi(3))
Case Else
Evento1 = "NC"
End Select
Select Case NumberOfSets
Case 0 ' come sopra
Evento2 = ""
Case 1 ' Come sopra Moonset
Evento2 = RoundHour(ListaEventi(NumberOfRises + 3))
Case Else
Evento2 = "NC"
End Select
End If
Else ' Non sono stati rivelati venti per questa data
Evento1 = "NC"
Evento2 = "NC"
End If
MoonRise = Evento1 'passo alle variabili globali
MoonSet = Evento2
Util.Dispose()
AstroUtil.Dispose()
End Sub