Noz mat,
un petit truc que j'avais bricolé à la ramasse, comme d'hab c'ets en cours mais si ca peut aider...
c'est du python, y'a surement moyen de développer en c++ pour les cartes
#-*- coding: iso-8859-1 -*-
# RESUME : Ce fichier a pour but de :
# 1 Recuperer la date et l'heure (GMT)
# 2 Recuperer la position gps
# 3 Recuperer la position angulaire par rapport au nord
# 4 Calculer la hauteur maximale du soleil dans le ciel
# 5 Calculer la duree du jour
# 6 Calculer la position en azimuth et en inclinaison du panneau a l'instant t
# 7 Actualiser le calcul toutes les minutes
#
# 0 Biblioteques
import math
import time
from time import gmtime, strftime
#mise en variable de pi
pi = math.pi
print "pi ="
print pi
#__________________________________________________
# 1 Recuperer la date et l'heure (GMT)
# 1.1 heure et date courante
print"Date et heure courante GMT"
print time.strftime('%y/%m/%d %H:%M:%S',gmtime())
# 1.2 mise en variables
# 1.2.1 extraction des données
var_annee_x = time.strftime('%y',gmtime())
var_mois_x = time.strftime('%m',gmtime())
var_jour_x = time.strftime('%d',gmtime())
var_heure_x = time.strftime('%H',gmtime())
var_minute_x = time.strftime('%M',gmtime())
var_seconde_x = time.strftime('%S',gmtime())
# 1.2.2 Transformation des variables en float
var_annee = float(var_annee_x)
var_mois = float(var_mois_x)
var_jour = float(var_jour_x)
var_heure = float(var_heure_x)
var_minute = float(var_minute_x)
var_seconde = float(var_seconde_x)
# 1.3 Verification de la prise en compte des variables
print "annee"
print var_annee
print "mois"
print var_mois
print "jour"
print var_jour
print "heure"
print var_heure
print "minute"
print var_minute
print "seconde"
print var_seconde
# 1.4 Calcul de l'angle entre le 21/03 et la date courante
# pour ce premier calcul il ne sera pas tenu compte de l'annee (bisextile ou pas)
# 1.4.1 Annee solaire
# 1.4.1.1 Variables de references
var_annee_solaire_nb_jours = float(365.256363051)
var_annee_solaire_heures = var_annee_solaire_nb_jours*24
var_annee_solaire_secondes = var_annee_solaire_heures*3600
# 1.4.1.2 Verification de la prise en compte des variables
print "nombre de jours dans une annee solaire"
print var_annee_solaire_nb_jours
print "nombre d'heures dans une annee solaire"
print var_annee_solaire_heures
print "nombre de secondes dans une annee solaire"
print var_annee_solaire_secondes
# 1.4.2 Prise en compte du temps ecoule
# 1.4.2.1 Variables de references
var_mois_reference = int(3)
var_jour_reference = int(21)
var_mois_courant_mars1 = int(3)
var_jour_max_mars1 = int(10)
var_mois_courant_avril = int(4)
var_jour_max_avril = int(30)
var_mois_courant_mai = int(5)
var_jour_max_mai = int(31)
var_mois_courant_juin = int(6)
var_jour_max_juin = int(30)
var_mois_courant_juillet = int(7)
var_jour_max_juillet = int(31)
var_mois_courant_aout = int(8)
var_jour_max_aout = int(31)
var_mois_courant_septembre = int(9)
var_jour_max_septembre = int(30)
var_mois_courant_octobre = int(10)
var_jour_max_octobre = int(31)
var_mois_courant_novembre = int(11)
var_jour_max_novembre = int(30)
var_mois_courant_decembre = int(12)
var_jour_max_decembre = int(31)
var_mois_courant_janvier = int(1)
var_jour_max_janvier = int(31)
var_mois_courant_fevrier = int(2)
var_jour_max_fevrier = int(28)
var_mois_courant_mars2 = int(3)
var_jour_max_mars2 = int(21)
# 1.4.2.2 Nombre de jours ecoules
# test mois de mars
if var_mois == 3:
if var_jour < 21:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour_max_octobre + var_jour_max_novembre + var_jour_max_decembre + var_jour_max_janvier + var_jour_max_fevrier + var_jour
elif var_jour > 21:
var_nb_jour = var_jour - var_jour_max_mars2
elif var_jour == 21:
var_nb_jour = 0
# test autres mois
elif var_mois == 1:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour_max_octobre + var_jour_max_novembre + var_jour_max_decembre + var_jour
elif var_mois == 2:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour_max_octobre + var_jour_max_novembre + var_jour_max_decembre + var_jour_max_janvier + var_jour
elif var_mois == 4:
var_nb_jour = var_jour_max_mars1 + var_jour
elif var_mois == 5:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour
elif var_mois == 6:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour
elif var_mois == 7:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour
elif var_mois == 8:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour
elif var_mois == 9:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour
elif var_mois == 10:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour
elif var_mois == 11:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour_max_octobre + var_jour
elif var_mois == 12:
var_nb_jour = var_jour_max_mars1 + var_jour_max_avril + var_jour_max_mai + var_jour_max_juin + var_jour_max_juillet + var_jour_max_aout + var_jour_max_septembre + var_jour_max_octobre + var_jour_max_novembre + var_jour
# 1.4.2.3 Transformation des variables en float
var_nb_jours_f = float(var_nb_jour)
var_nb_heures = var_nb_jours_f*24 + var_heure
var_nb_secondes = var_nb_heures*3600 + var_minute*60 + var_seconde
# 1.4.2.4 Verification de la prise en compte des variables
print "nombre de jours ecoules depuis l'equinoxe de printemps"
print var_nb_jours_f
print "nombre d'heures ecoules depuis l'equinoxe de printemps"
print var_nb_heures
print "nombre de secondes ecoules depuis l'equinoxe de printemps"
print var_nb_secondes
# 1.4.3 transformation en angle
# impression de l'angle en radians
var_angle_revolution = (var_nb_secondes*(2*pi))/var_annee_solaire_secondes
# impression de l'angle en degres
var_angle_revolution_d = 360*var_angle_revolution/(2*pi)
# Verification de la prise en compte des variables
print "angle de révolution en radians"
print var_angle_revolution
print "angle de révolution en degrés"
print var_angle_revolution_d
# heure decimale
var_minute_d = var_minute/60
var_seconde_d = var_seconde/3600
var_heure_d = var_heure+var_minute_d+var_seconde_d
var_heure_d
# heure radiale
var_heure_rad = var_heure_d * (2*pi) / 24
print "heure en radians"
print var_heure_rad
#__________________________________________________
# 2 Recuperer la position gps
# 2.1 Latitude
# 2.1.1 Entrée de la latitude
print "Entrer la latitude, degré"
latitude_deg = raw_input()
print "Entrer la latitude, minutes"
latitude_min = raw_input()
print "Entrer la latitude, seconde"
latitude_sec = raw_input()
# 2.1.2 transformation des variables en flottant
latitude_deg_f = float(latitude_deg)
latitude_min_f = float(latitude_min)
latitude_sec_f = float(latitude_sec)
# 2.1.3 transformation en numérique
latitude_min_f_n = latitude_min_f/60
latitude_sec_f_n = latitude_sec_f/3600
# 2.1.4 mise en variables
var_latitude = latitude_deg_f+latitude_min_f_n+latitude_sec_f_n
var_latitude_rad = var_latitude * (2*pi) / 360
# 2.2 longitude
# 2.2.1 Entrée de la longitude
print "Entrer la longitude, degré"
longitude_deg = raw_input()
print "Entrer la longitude, minutes"
longitude_min = raw_input()
print "Entrer la longitude, seconde"
longitude_sec = raw_input()
# 2.2.2 transformation des variables en flottant
longitude_deg_f = float(longitude_deg)
longitude_min_f = float(longitude_min)
longitude_sec_f = float(longitude_sec)
# 2.2.3 transformation en numérique
longitude_min_f_n = longitude_min_f/60
longitude_sec_f_n = longitude_sec_f/3600
# 2.2.4 mise en variables
var_longitude = longitude_deg_f+longitude_min_f_n+longitude_sec_f_n
var_longitude_rad = var_longitude * (2*pi) / 360
# 2.3 Vérification de la prise en compte des variables
print "latitude en degrés"
print var_latitude
print "latitude en radians"
print var_latitude_rad
print "longitude en degrés"
print var_longitude
print "longitude en radians"
print var_longitude_rad
# Decalage horaire en fonction de la longitude
var_heure_rad = var_heure_rad - var_longitude_rad
print "heure en radians"
print var_heure_rad
#__________________________________________________
# 3 Recuperer la position boussole
#
http://radiospares-fr.rs-online.com/web ... s/6666637/ # le panneau est supposé orienté plein nord
# 3.1 Entrée de la boussole
print "Entrer l'angle entre le nord et l'axe courant, degré"
var_boussole_deg = raw_input()
# 3.2 transformation des variables en flottant
var_boussole_deg_f = float(var_boussole_deg)
# 3.3 transformation en radians
var_boussole = (2*pi)*var_boussole_deg_f/360
# 3.4 Vérification de la prise en compte des variables
print "angle de boussole en radians"
print var_boussole
print "angle de boussole en degrés"
print var_boussole_deg_f
#__________________________________________________
# 4 Calculer la hauteur maximale du soleil dans le ciel
# 4.1 Angle de latitude
#print "Entrer la latitude, rad"
#var_latitude_rad = raw_input()
#var_latitude = float(var_latitude_rad)
# 4.2 Angle du soleil par rapport à l'équateur
# 4.2.1 Angle de tropique
var_soleil_tropique_deg = float(23+(26/60))
var_soleil_tropique = (var_soleil_tropique_deg*(2*pi))/360
# 4.2.2 Angle de la terre sur sa révolution
#print "Entrer l'angle revolution, radians"
#var_angle_revolution_rad = raw_input()
#var_angle_revolution = float(var_angle_revolution_rad)
# 4.2.3 Angle du soleil par rapport à l'équateur
var_soleil_equateur = var_soleil_tropique*math.sin(var_angle_revolution)
# 4.3 Angle maximal du soleil dans le ciel
var_soleil_max = var_latitude_rad + var_soleil_equateur
# 4.4 Vérification de la prise en compte des variables
print "var_soleil_tropique"
print var_soleil_tropique
print "var_soleil_equateur"
print var_soleil_equateur
print "var_soleil_max"
print var_soleil_max
#__________________________________________________
# 5 Calculer la durée du jour
#print "Entrer le nombre de jour ecoules"
#var_nb_jour_x = raw_input()
#var_nb_jour = float(var_nb_jour_x)
# Angle d'ensoleillement
# formule y = -2* acos(tan(lambda) * tan(asin(var_soleil_tropique) * sin (delta)))
# On essaie la formule
try:
var_duree_jour_rad = 2*math.acos(math.tan(var_latitude)*math.tan(math.asin(var_soleil_tropique*math.sin(-var_angle_revolution))))
# En cas d'erreur on traite
except ValueError:
# si le nombre de jour est inférieur à 185 alors nous somme le jour dans l'hémisphère nord et inversement dans l'hémisphère sud
if (var_nb_jour < 185 and var_latitude > 0) or (var_nb_jour > 184 and var_latitude < 0):
var_duree_jour_rad =(2*pi)
else:
var_duree_jour_rad = (2*0.)
# Tranformation en heure décimale
var_duree_jour_h = 24*var_duree_jour_rad/(2*pi)
# Vérification de la prise en compte des variables
print "var_duree_jour_rad"
print var_duree_jour_rad
print "var_duree_jour_h"
print var_duree_jour_h
#__________________________________________________
#print "duree jour rad"
#var_duree_jour_rad_i = raw_input()
#var_duree_jour_rad = float(var_duree_jour_rad_i)
# duree 1/2 jour
print "duree 1/2 jour rad"
var_duree_12_jour_rad = var_duree_jour_rad/2
print var_duree_12_jour_rad
# angle de lever du soleil
print "angle de lever du soleil"
var_angle_lever_soleil_rad = pi - var_duree_12_jour_rad
print var_angle_lever_soleil_rad
# angle de coucher du soleil
print "angle de coucher du soleil"
var_angle_coucher_soleil_rad = pi + var_duree_12_jour_rad
print var_angle_coucher_soleil_rad
# heure en radians
#print "var_heure_rad"
#var_heure_rad_i =raw_input()
#var_heure_rad = float(var_heure_rad_i)
# azimuth
print "angle d'azimuth"
if var_heure_rad < var_angle_lever_soleil_rad or var_heure_rad > var_angle_coucher_soleil_rad:
var_azimuth = 0
else:
var_azimuth = var_heure_rad
print var_azimuth
# inclinaison
# angle maxi du soelil par rapport à l'horizon
#print "angle maxi du soelil par rapport à l'horizon"
#var_soleil_max_i = raw_input()
#var_soleil_max = float(var_soleil_max_i)
# heure en décimale
#print "var_heure_d"
#var_heure_d_i =raw_input()
#var_heure_d = float(var_heure_d_i)
if var_heure_rad < var_angle_lever_soleil_rad or var_heure_rad > var_angle_coucher_soleil_rad:
var_inclinaison = 0
elif var_heure_rad > pi:
var_inclinaison = (pi/2) - var_soleil_max * ((var_heure_rad - var_angle_coucher_soleil_rad) / (pi - var_angle_coucher_soleil_rad))
else:
var_inclinaison = (pi/2) - var_soleil_max * ((var_heure_rad - var_angle_lever_soleil_rad) / (pi - var_angle_lever_soleil_rad))
print "angle d'inclinaison"
print var_inclinaison