Altitude du soleil après 20 minutes de l'heure actuelle.

L'utilisation et la création des scripts.
Répondre
Dekelver Pieter-Jan
Messages : 151
Enregistré le : 04 mars 2021, 15:23

Altitude du soleil après 20 minutes de l'heure actuelle.

Message par Dekelver Pieter-Jan »

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
Marc DELDEM
Messages : 1269
Enregistré le : 20 juin 2009, 01:01

Re: Altitude du soleil après 20 minutes de l'heure actuelle.

Message par Marc DELDEM »

Salut,

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
Marc
Dekelver Pieter-Jan
Messages : 151
Enregistré le : 04 mars 2021, 15:23

Re: Altitude du soleil après 20 minutes de l'heure actuelle.

Message par Dekelver Pieter-Jan »

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.

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
Marc DELDEM
Messages : 1269
Enregistré le : 20 juin 2009, 01:01

Re: Altitude du soleil après 20 minutes de l'heure actuelle.

Message par Marc DELDEM »

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:

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
Marc
Dekelver Pieter-Jan
Messages : 151
Enregistré le : 04 mars 2021, 15:23

Re: Altitude du soleil après 20 minutes de l'heure actuelle.

Message par Dekelver Pieter-Jan »

Merci! Entre temps j'avais déjà trouvé une solution avec IF/ENDIF.
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
Répondre