Bonjour à tous,
Il y a quelques jours, j'ai reçu un livre de mon père (astrophysicien) qui s'intitule "Ordinateur et astronomie". Ce livre reprend les concepts d'astronomie et de physique, les ré-explique et conduit à réaliser les algorithmes informatiques pour modéliser toute une série de choses en astronomie.
J'ai donc commencé par la première partie du livre qui traite de la modélisation du système solaire. Après l'étude de toute la partie "physique", la programmation informatique en PHP/HTML/CSS n'était pas très compliquée.
Voici le résultat que j'ai obtenu, la position en temps réel des planètes sur leur orbite autour du soleil. Les images des planètes tournent également sur elles-mêmes, avec Vénus tournant dans le sens opposé des autres pour respecter la réalité. Mercure fait le tour du soleil en 88 jours, j'ai donc bien observé une différence de 3. ... ° entre sa position d'hier et aujourd'hui.
Je n'ai pas pu conserver la proportionnalité des distances soleil - planète, j'aurais dû positionner pluton (même si je sais que Pluton n'est plus répertoriée dans les planètes du système, mais comme planète naine) à plusieurs mètres de distance sur la page web ... J'ai donc opté pour une valeur du rayon fixe, que je multiplie par la position de la planète.
L'image est dézoomée à 50%.
J'en viens à mon problème : je suis amené à traiter parfois des nombres très petits dans les calculs de positionnement, et environ un rafraîchissement sur 10, j'ai un maximum execution time qui intervient. J'ai déjà identifié la source du problème en consultant le stack, c'est mes méthodes d'arrondis et de processus itératifs qui plantent. Le processus itératif continue jusqu'au moment où la valeur approchée est égale à 7 décimales près.
Il y a quelques jours, j'ai reçu un livre de mon père (astrophysicien) qui s'intitule "Ordinateur et astronomie". Ce livre reprend les concepts d'astronomie et de physique, les ré-explique et conduit à réaliser les algorithmes informatiques pour modéliser toute une série de choses en astronomie.
J'ai donc commencé par la première partie du livre qui traite de la modélisation du système solaire. Après l'étude de toute la partie "physique", la programmation informatique en PHP/HTML/CSS n'était pas très compliquée.
Voici le résultat que j'ai obtenu, la position en temps réel des planètes sur leur orbite autour du soleil. Les images des planètes tournent également sur elles-mêmes, avec Vénus tournant dans le sens opposé des autres pour respecter la réalité. Mercure fait le tour du soleil en 88 jours, j'ai donc bien observé une différence de 3. ... ° entre sa position d'hier et aujourd'hui.
Je n'ai pas pu conserver la proportionnalité des distances soleil - planète, j'aurais dû positionner pluton (même si je sais que Pluton n'est plus répertoriée dans les planètes du système, mais comme planète naine) à plusieurs mètres de distance sur la page web ... J'ai donc opté pour une valeur du rayon fixe, que je multiplie par la position de la planète.
L'image est dézoomée à 50%.
J'en viens à mon problème : je suis amené à traiter parfois des nombres très petits dans les calculs de positionnement, et environ un rafraîchissement sur 10, j'ai un maximum execution time qui intervient. J'ai déjà identifié la source du problème en consultant le stack, c'est mes méthodes d'arrondis et de processus itératifs qui plantent. Le processus itératif continue jusqu'au moment où la valeur approchée est égale à 7 décimales près.
Code PHP :
<?php
public function calculateEccentricAnomaly($averageAnomaly, $eccentricity, $decimale = 7) {
$previous = 0;
$ea = $averageAnomaly;
while ($ea != $previous) {
$previous = $ea;
$ea = self::roundness($averageAnomaly + $eccentricity * sin($ea), $decimale);
}
return $ea;
}
public function roundness($x, $n) {
$mult = pow(10, $n);
$x = round($x * $mult) / $mult;
return $x;
}
Ma question est-donc la suivante : si vous auriez du faire de telles méthodes, les auriez vous faites avec un while, ou pensez-vous à un autre moyen ?
Merci d'avance