Cher,
Quelle est la meilleure façon de calculer la hauteur du soleil dans les 20 prochaines minutes ?
Je veux donc connaître la hauteur du soleil à partir de MAINTENANT, à 20 minutes.
Si le soleil dépasse une certaine hauteur, le programme ne devrait plus démarrer. Je veux donc anticiper 20 minutes...
Merci
Top
Altitude du soleil après 20 minutes de l'heure actuelle.
-
- Messages : 152
- Enregistré le : 04 mars 2021, 15:23
-
- Messages : 1269
- Enregistré le : 20 juin 2009, 01:01
Re: Altitude du soleil après 20 minutes de l'heure actuelle.
Salut,
Tu peux essayer quelque chose comme ça:
Marc
Tu peux essayer quelque chose comme ça:
Code : Tout sélectionner
NOW CurrentDate
PRINT "SUN elevation for the next 20 minutes:"
FOR nIdx=0 19
Date=CurrentDate+nIdx/(24*60)
GOSUB CheckSunElevation:
NEXT nIdx
END
CheckSunElevation:
GetRaDecSun Date RA DEC ElevationSun
RAD_TO_RA RA RA$
RAD_TO_DEC DEC DEC$
RAD_TO_DEC ElevationSun ElevationSun$
DateToStr Date Date$
PRINT "----------------------------"
PRINT "Date :" Date$
PRINT "SUN :"
PRINT "RA : " RA$
PRINT "DEC : " DEC$
PRINT "Elevation : " ElevationSun$
RETURN
-
- Messages : 152
- Enregistré le : 04 mars 2021, 15:23
Re: Altitude du soleil après 20 minutes de l'heure actuelle.
Merci beaucoup. J'ai réécrit un peu le code pour qu'il s'imprime plus petit (uniquement la date et la hauteur).
Mais : comment puis-je prendre la dernière hauteur du script principal, afin de pouvoir utiliser cette valeur. J'ai l'impression que cette valeur est désormais perdue lorsque je sors du faux-châssis.
"SI Elévationsun=>0.1"
Merci.
Mais : comment puis-je prendre la dernière hauteur du script principal, afin de pouvoir utiliser cette valeur. J'ai l'impression que cette valeur est désormais perdue lorsque je sors du faux-châssis.
"SI Elévationsun=>0.1"
Merci.
Code : Tout sélectionner
NOW CurrentDate
PRINT "SUN elevation for the next 20 minutes:"
FOR nIdx=0 19
Date=CurrentDate+nIdx/(24*60)
GOSUB CheckSunElevation:
NEXT nIdx
END
CheckSunElevation:
GetRaDecSun Date RA DEC ElevationSun
RAD_TO_RA RA RA$
RAD_TO_DEC DEC DEC$
RAD_TO_DEC ElevationSun ElevationSun20$
DateToStr Date Date$
PRINT Date$ ": " ElevationSun20$
RETURN
-
- Messages : 1269
- Enregistré le : 20 juin 2009, 01:01
Re: Altitude du soleil après 20 minutes de l'heure actuelle.
Je n'ai pas bien compris ton problème.
Une variable dans un script, une fois définie, elle est visible partout. Il n'y a pas de notion de variable locale comme dans les langages de programmation habituels.
Voici une proposition.
Il faudra enlever cette ligne qui sert juste pour simuler une date:
Marc
Une variable dans un script, une fois définie, elle est visible partout. Il n'y a pas de notion de variable locale comme dans les langages de programmation habituels.
Voici une proposition.
Il faudra enlever cette ligne qui sert juste pour simuler une date:
Code : Tout sélectionner
// Simulation - Override NOW - Should be removed
EncodeDateTime 2023 12 30 07 15 00 00 CurrentDate
Code : Tout sélectionner
NOW CurrentDate
// Simulation - Override NOW - Should be removed
EncodeDateTime 2023 12 30 07 15 00 00 CurrentDate
HeightThresholdDeg=0.1
HeightThresholdRad=HeightThresholdDeg*TORAD
ShouldStopSession=FALSE
PRINT "SUN elevation for the next 20 minutes:"
FOR nIdx=0 19
Date=CurrentDate+nIdx/(24*60)
GOSUB CheckSunElevation:
IF ElevationSun>HeightThresholdRad
ShouldStopSession=TRUE
// Break
nIdx=20
ENDIF
NEXT nIdx
IF ShouldStopSession=TRUE
PRINT "Session should be stopped"
ENDIF
END
CheckSunElevation:
GetRaDecSun Date RA DEC ElevationSun
RAD_TO_RA RA RA$
RAD_TO_DEC DEC DEC$
RAD_TO_DEC ElevationSun ElevationSun$
DateToStr Date Date$
PRINT Date$ ": " ElevationSun$
RETURN
-
- Messages : 152
- Enregistré le : 04 mars 2021, 15:23
Re: Altitude du soleil après 20 minutes de l'heure actuelle.
Merci! Entre temps j'avais déjà trouvé une solution avec IF/ENDIF.
Passons maintenant aux prochains "problèmes"
Voir le code ici :
Passons maintenant aux prochains "problèmes"
Voir le code ici :
Code : Tout sélectionner
NOW CurrentDate
PRINT
PRINT "Checking if the sun will pass the observation limit of -11 degree in the next 20 minutes"
FOR nIdx=0 19
Date=CurrentDate+nIdx/(24*60)
GOSUB CheckSunElevation:
NEXT nIdx
PRINT
PRINT "The sun will not pass the observation altitude limit of -11 degree in the next 20 minutes."
GOTO FIND_NEXT_OBJECT:
CheckSunElevation:
GetRaDecSun Date RA DEC ElevationSun
RAD_TO_RA RA RA$
RAD_TO_DEC DEC DEC$
RAD_TO_DEC ElevationSun ElevationSun11$
DateToStr Date Date$
PRINT Date$ ": " ElevationSun11$
IF ElevationSun>0.20
PRINT
PRINT "The sun is above the observation altitude limit at " Date$ ": " ElevationSun11$
PRINT "Stopping observations for this night."
GOTO END_OBSERVATIONS:
ELSE
ENDIF
RETURN