Aller au contenu

australopitheque

Membre
  • Compteur de contenus

    18
  • Inscription

  • Dernière visite

Tout ce qui a été posté par australopitheque

  1. bonjour Roger, non l'histoire n'a jamais été vraiment ma tasse de thé ou chouchenn que ce soit a l'école(très loin) ou maintenant je suis plus technique et un peu geek lol.(j'aime bien comprendre pour déconstruire et reconstruire a ma sauce ^^). y'a pas d'âge pour s'y remettre pour ce qui concerne l'association je suis partie juste avant la coupole trop de frayeur vu les budget qui était en jeu ^^.
  2. oui nos cotes sont magnifique, dommage trop de touriste . les cotes belges jamais vu ,il y a tellement déjà a voir en bretagne, entre mer, site mégalithique et paysage . l'Ideal pour ceux qui peuvent poser leur lunette est en haut du Ménez hom 329m, il y a un super plateau de 360° loin de tout.
  3. bonjour, comme je sait plus si je m'étais présenté , je réitère ^^. donc je m'appel Olivier ,breton et fière le l'être par adoption. passionné astronomie depuis très longtemps, qu'on avait fini par crée une association d'astronomie dans ma régions et qui vole maintenant de ses propre ailes ^^( voyager 3 astronomie). maintenant la passion est plutôt tourner par le moins chère donc juste un newton 150/900 sur équatorial. l'aquariophilie a pris aussi le dessus d'où certain projet que je travail depuis presqu'un ans dessus pour le plaisir( l'arduino c'est pas si facile a apprendre ^^). voila si question je répondrai avec plaisir
  4. bonjour a tous,je travail actuellement sur un petit programme arduino (mega2560) et je suis confronter a un soucis de calcul pour calculer les heure de lever coucher de lune avec dst et localisation.(en faite je me suis perdu dans le code). je crois que j'ai louper quelque chose mais je vois pas où car j'ai un retour obligatoire en nan alors que normalement je devrai avoir un résultat(en plus j'ai perdu mon livre de jean Meeus pour comparer les résultats) // Fonction pour calculer la date julienne correspondant à une date donnée double julian_Date(int annee, int mois, int jour) { bool estGregorien = annee >= 1583; int a = annee / 100; int b = estGregorien ? 2 - a + a / 4 : 0; double c = estGregorien ? 365.25 * annee : 365 * annee + 0.25; double d = 30.6000 * (mois + 1); double jd = b + c + d + jour + 1720994.5; return jd; } le calcul de JD est correcte en résultat ,car vérifié sur d'autre site. voici la fonction du code incriminé. // Fonction pour calculer le lever et le coucher de la lune pour une date et une position données void moon_rise_set(int year, int month, int day, int dst_offset, double lon, double lat, double *rise_time, double *set_time) { const static double DR = PI / 180; // Conversion degrés -> radians const static double K1 = 15 * PI * 1.0027379 / 180; // Constante pour le calcul du lever/coucher de la Lune // Calcul de la date julienne pour la date donnée double jd = julian_Date(year, month, day); // Calcul de la date julienne à midi heure locale en prenant en compte l'heure d'été et la longitude double jd0 = floor(jd) - 0.5 + 0.5 * dst_offset / 3600.0 - lon / 360.0; // Calcul du temps en siècles depuis J2000 double t0 = (jd0 - 2451545.0) / 36525.0; // Calcul de différentes variables astronomiques pour la lune double m0 = fmod(358.47583 + 35999.04975 * t0, 360.0) * DR; // Moyenne anomalie de la lune double m1 = fmod(296.1046 + 385.8169 * t0 + 0.01043 * t0 * t0, 360.0) * DR; // Anomalie corrigée de la lune double f = fmod(21.2964 + 390.6705 * t0 - 0.0016 * t0 * t0, 360.0) * DR; // Argument de la latitude de la lune double d = fmod(350.737486 + 445267.1142 * t0 - 0.001436 * t0 * t0, 360.0) * DR; // Distance moyenne de la lune double omega = fmod(259.183275 - 1934.1420 * t0 + 0.002078 * t0 * t0, 360.0) * DR; // Longitude ascendante du noeud ascendant de la lune // Calcul de la longitude de la lune double l = m0 + m1 * sin(m0) + f * sin(d) + 0.0021 * sin(d - m0) - 0.0018 * sin(d + m0) + omega * sin(d); // Longitude de la lune // Calcul de la latitude de la lune double obliquity = 23.439281 * DR; // Obliquité de l'écliptique double moon_lat = atan2(sin(obliquity) * sin(l), cos(l)); // Latitude de la lune // Calcul de la déclinaison de la lune double moon_dec = asin(sin(moon_lat) * cos(obliquity) + cos(moon_lat) * sin(obliquity) * sin(l)); // Déclinaison de la lune // Calcul du temps sidéral local à midi heure locale double lst = 100.46 + 0.985647 * jd0 + lon + 15.0 * dst_offset / 3600.0; // Calcul de l'angle horaire de la lune double ha = lst - l; // Calcul de l'altitude de la lune au moment du lever/coucher double moon_alt = asin(sin(moon_lat) * sin(lat * DR) + cos(moon_lat) * cos(lat * DR) * cos(ha * DR)); // Calcul du cosinus de l'angle horaire pour le calcul du lever/coucher de la lune double cosh = (sin(-0.5667 * DR) - sin(lat * DR) * sin(moon_dec)) / (cos(lat * DR) * cos(moon_dec)); // Vérifie si le cosinus de l'angle horaire est valide if (cosh >= -1.0 && cosh <= 1.0) { // Calcul de l'heure de lever de la lune double moon_rise = lst - (180.0 / 15.0) * (moon_alt / DR) / 15.0; // Calcul de l'heure de coucher de la lune double moon_set = lst + (180.0 / 15.0) * (-moon_alt / DR) / 15.0; // Correction pour prendre en compte la date locale moon_rise += 24.0 * (moon_rise < 0); moon_set += 24.0 * (moon_set < 0); // Affectation des valeurs de temps local de lever/coucher de la lune aux pointeurs passés en paramètres *rise_time = moon_rise; *set_time = moon_set; // Vérifie si la lune ne se lève pas if (isnan(*rise_time)) { printf("La lune ne se lève pas ce jour là.\n"); } // Vérifie si la lune ne se couche pas if (isnan(*set_time)) { printf("La lune ne se couche pas ce jour là.\n"); } } else { // Si le cosinus de l'angle horaire n'est pas valide, la lune ne se lève pas ou ne se couche pas printf("La lune ne se lève pas ou ne se couche pas ce jour là.\n"); *rise_time = NAN; *set_time = NAN; } // Calcul de différentes variables pour le calcul de l'azimut de la lune double x = cos(ha); double y = sin(ha); double z = sin(lat * DR); double p = y * z + cos(lat * DR) * x; double q = sqrt(pow(x, 2) + pow(y, 2)); double r = atan2(z * q, p) / DR; // Calcul de l'azimut de la lune double h1 = 360.0 - r; double h2 = r; // Calcul de l'altitude de la lune au moment du lever/coucher if (fabs(cosh) <= 1.0) { moon_alt = asin(sin(moon_lat) * sin(lat * DR) + cos(moon_lat) * cos(lat * DR) * cos(ha * DR)); } else { // Si le cosinus de l'angle horaire est invalide, la lune ne se lève/couche pas ce jour-là *rise_time = NAN; *set_time = NAN; return; } // Calcul de l'angle horaire pour le lever et le coucher de la lune double h0 = fabs(moon_alt) + 0.7275 * (moon_alt - 0.53 * PI / 180); // Correction de la hauteur de l' // Calcul du temps universel de lever/coucher de la lune double ut_rise = (r - h0 + 360) / 15.0; // Temps universel de lever de la lune double ut_set = (r + h0 + 360) / 15.0; // Temps universel de coucher de la lune // Calcul du temps local de lever/coucher de la lune à partir du temps universel double ta = ut_rise + K1 * sin(m0 - l) - 0.014 * sin(2 * m0 - l); double tb = ut_set + K1 * sin(m0 - l) - 0.014 * sin(2 * m0 - l); // Affectation des valeurs de temps local de lever/coucher de la lune aux pointeurs passés en paramètres // Conversion en degrés à partir de l'heure locale *rise_time = (ta - lon - 12.0 - dst_offset / 15.0) * 15.0; *set_time = (tb - lon - 12.0 - dst_offset / 15.0) * 15.0; // Vérifie si les angles horaires sont valides if (h1 < 0.0) { h1 += 360.0; } if (h2 > 360.0) { h2 -= 360.0; } // Vérifie si la lune est visible toute la nuit if (h1 > h2) { Moonrise = true; Moonset = true; } else { // Vérifie si la lune est visible avant minuit ou après minuit if (l < h1) { *rise_time += 24.0; *set_time += 24.0; } if (l > h2) { *rise_time += 24.0; *set_time += 24.0; } // Vérifie si la lune est visible toute la nuit if (l < h1 || l > h2) { Moonrise = true; Moonset = true; } else { // La lune est visible, mais pas toute la nuit Moonrise = false; Moonset = false; } } }
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.