Aller au contenu

Messages recommandés

Posté(e)

@CaptainIgloo, chez moi le caclul me cela retourne ça :

[DEBUG] 21:37:50: AzimutFenetre : 200°
[DEBUG] 21:37:50: LargeurFenetre : 180 cm, EpaisseurFenetre : 30 cm, HauteurFenetre : 210cm
[DEBUG] 21:37:50: Seuils gauche d'incidence Azimutale dans la fenetre : 119.46°
[DEBUG] 21:37:50: Seuils droit d'incidence Azimutale dans la fenetre : 280.54°
[DEBUG] 21:37:50: Seuil haut d'incidence zenitale dans la fenetre : 81.87°
[DEBUG] 21:37:50: PosSoleilAzimut : 301.02563180577°
[DEBUG] 21:37:50: -----------------------------------------
[DEBUG] 21:37:50: Soleil àdroite de la fenêtre

A partir de làje compare si je suis dans la fenêtre d'incidence Azimutale mais comment tu fais pour incidence zenitale ? Tu compares juste le seuil avec l'angle actuel ?

-- Fonction pour réduire à2 décimales
function round(num, dec)
  local mult = 10^(dec or 0)
  return math.floor(num * mult + 0.5) / mult
end
 
local AzimutFenetre = 200 --Mettre ici l azimut/orientation de la fenetre en degre (°), pour moi plein sud = 180°
local LargeurFenetre = 180
local EpaisseurFenetre = 30
local HauteurFenetre = 210
local PosSoleilAzimut = tonumber( fibaro:getGlobalValue( "PosSoleilAzimut" ) ); 

fibaro:debug("AzimutFenetre : " .. AzimutFenetre .. "°");
fibaro:debug("LargeurFenetre : " .. LargeurFenetre .. " cm, "
  			.. "EpaisseurFenetre : " .. EpaisseurFenetre .. " cm, " 
  		 	.. "HauteurFenetre : " .. HauteurFenetre .. "cm");

-- Seuils gauche et droit d incidence Azimutale dans la fenetre = Az + ou - cet angle
masqueAz = round(math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2)
masqueAzG = round(AzimutFenetre-math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2)
masqueAzD = round(AzimutFenetre+math.deg(math.atan(LargeurFenetre/EpaisseurFenetre)),2)

fibaro:debug("Seuils gauche d incidence Azimutale dans la fenetre : " .. masqueAzG .. "°")
fibaro:debug("Seuils droit d incidence Azimutale dans la fenetre : " .. masqueAzD .. "°")

-- Seuil haut d'incidence zenitale dans la fenetre = Horizon + cet angle
masqueElev = round(math.deg(math.atan(HauteurFenetre/EpaisseurFenetre)),2)
fibaro:debug("Seuil haut d'incidence zenitale dans la fenetre : " .. masqueElev .. "°")

  
fibaro:debug("PosSoleilAzimut : " .. PosSoleilAzimut .. "°");
fibaro:debug("-----------------------------------------");

if (PosSoleilAzimut > masqueAzG 
      and PosSoleilAzimut < masqueAzD) then
 fibaro:debug("Soleil dans la fenêtre")
elseif (PosSoleilAzimut < masqueAzG) then
  fibaro:debug("Soleil àdroite de la fenêtre")
elseif (PosSoleilAzimut > masqueAzD) then
  fibaro:debug("Soleil àdroite de la fenêtre")
end
Posté(e)

Je n'avais pas pensé àcela mais je me retrouve avec une Elevation à-3° :huh:

[DEBUG] 21:50:33: -----------------------------------------
[DEBUG] 21:50:33: AzimutFenetre : 200°
[DEBUG] 21:50:33: LargeurFenetre : 180 cm, EpaisseurFenetre : 30 cm, HauteurFenetre : 210cm
[DEBUG] 21:50:33: -----------------------------------------
[DEBUG] 21:50:33: Seuils gauche d'incidence Azimutale dans la fenetre : 119.46°
[DEBUG] 21:50:33: Seuils droit d'incidence Azimutale dans la fenetre : 280.54°
[DEBUG] 21:50:33: Seuil haut d'incidence zenitale dans la fenetre : 81.87°
[DEBUG] 21:50:33: -----------------------------------------
[DEBUG] 21:50:33: [Azimut] Soleil àdroite de la fenêtre(304°)
[DEBUG] 21:50:33: [Elevation] Soleil couché (-4°)
[DEBUG] 21:44:47: Seuil haut d'incidence zenitale dans la fenetre : 81.87°
[DEBUG] 21:44:47: -----------------------------------------
[DEBUG] 21:44:47: PosSoleilAzimut : 303°
[DEBUG] 21:44:47: PosSoleilElevation : -3°
[DEBUG] 21:44:47: -----------------------------------------
[DEBUG] 21:44:47: Soleil àdroite de la fenêtre
[DEBUG] 21:44:47: Soleil dans la fenêtre
Posté(e)

darklite44,

pour l'angle zenital effectivement on compare àl'angle d'élévation solaire. On ourrait aussi avoir un masquage tel qu'une terrasse couverte ou un toit plongeant ...

Posté(e)

@nico

Oui il y a un décalage entre l'heure du coucher de soleil et son élévation sur l'horizon qui devrait être à0°.. Hier j'avais 21:04 comme coucher mais j'étais à-1,4 en élévation.

Posté(e)

Normal, il y avait une grosse vague sur la mer devant chez toi, elle a donc caché le soleil plus tôt. L'algo en tient compte :)

Posté(e)

@al1_fibaro,

Je crois avoir trouvé l'origine de l'erreur (décalage). Cela vient selon moi du jour de l'année (DoY : Day of Year) qui s'appuie sur 365,25 jours par an au lieu de déterminer si l'année est bissextile.

Avec la fonction suivante tu peux déterminer 365 ou 366 selon l'année en question :

function isLeapYear(year)
  return year%4==0 and (year%100~=0 or year%400==0)
end
Posté(e)

Voilà  ce que ça donne : 

function calcul_jour_julien(jour, mois, annee, heure, minute, seconde)
  local month
  local year
  local day
  local days
  local a
  local b
  local jour_julien
  day   = jour + heure /24 + minute/ 1440 + seconde / 86400
  year  = annee
  month = mois
  if month==1 or month==2 then
    year=year - 1
    month=month + 12
  end
  if isLeapYear(year) then
    days=365.25
	else
    days=365
  end
  a = math.floor(year / 100)
  b = 2 - a + math.floor( a / 4)
  jour_julien = math.floor( days * ( year + 4716)) + math.floor(30.6001*(month+1.0)) + day + b - 1524.5  
  return jour_julien
end

Avec correctif


[DEBUG] 11:57:12: 19/05/15 11:57:12
[DEBUG] 11:57:12: Altitude 30.42 °, azimut 147.17 °.

Sans correctif

[DEBUG] 11:56:08: 19/05/15 11:56:08
[DEBUG] 11:56:08: Altitude 53.05 °, azimut 128.26 °.

 

La différence me parait énorme. Je me suis planté quelque part ?

Posté(e)

Effectivement, c'est énorme. Car moi quand je compare mes données avec celles du site que j'avais mis plus haut dans le topic, la donnée de base était précise àmon de 1 degré prêt, donc...

Posté(e)

Je n'avais pas vu cette ligne également à  corriger :

local nb_siecle = jour_nouveau/(days*100)

Sans correctif

[DEBUG] 12:06:31: 19/05/15 12:06:31
[DEBUG] 12:06:31: Altitude 32.11 °, azimut 152.64 °.
 
Avec correctif
[DEBUG] 12:06:55: 19/05/15 12:06:55
[DEBUG] 12:06:55: Altitude 32.14 °, azimut 152.75 °.
Posté(e)

Personnellement je compare à  l'app sun seeker.

 

Non il faut utiliser la fonction pour avoir le nombre de jour de l'année. 365 et 366 pour les année bissextile.

Si la fonction revoie true le calcul doit partir sur 366 Jours, si false sur 365, et jamais 365.25.

-- Si bissextile la fonction renvoie true sinon false
function isLeapYear(annee)
  return annee%4==0 and (annee%100~=0 or annee%400==0)
end
Posté(e)

 

Personnellement je compare à  l'app sun seeker.

 

Non il faut utiliser la fonction pour avoir le nombre de jour de l'année. 365 et 366 pour les année bissextile.

Si la fonction revoie true le calcul doit partir sur 366 Jours, si false sur 365, et jamais 365.25.

-- Si bissextile la fonction renvoie true sinon false
function isLeapYear(annee)
  return annee%4==0 and (annee%100~=0 or annee%400==0)
end

Effectivement je m'étais contenté de copier l'existant...

Posté(e)

Bah non, on t'attendais pour te voter membre du mois... :)

 

Moi j'ai pas le temps, rien que refaire toute ma HC2 aujourd'hui j'en ai encore pour des heures et des heures...

Posté(e)

 

 

vd_positionsolaire.png

 

J'avance doucement, par contre il y a un décalage entre couchers de soleil.

 

Tu avais l'air d'avoir bien travaillé avec tes icones CaptainIgloo

Posté(e)

Je ne comprend pas pourquoi il y'a autant de différence entre les résultats du module virtuel et le site sunearthtools : 

[DEBUG] 14:15:23: Altitude 31.41 °, azimut 191.23 °.

Cela fait plus de 30° d'écart :

 

position du soleil    Info Elevation Azimut latitudes longitudes
29/05/2015   14:16 | GMT1 63.87° 188.42° 47.544174° N 0.673835° W

 

Une idée ?

 

J'ai trouvé 2 autres sites pas mal pour comparer : 
×
×
  • Créer...