Beispiel #1
0
 /**
  * @param $spot: spot dont il est question -> pour récuperer les restrictions
  * @param $tabHoure : array $tabHoure[$nbHoure] for the day
  * @param $mareeDate : prévision de marre que l'on va analyser
  * Remplis le $tabHoure avec le temps de navigation possible pour chaque heure=elem du tab
  */
 static function calculNbHoureNav($spot, &$tabHoure, $mareeDate)
 {
     $timeRestriction = 0;
     $timeTab = array();
     $listePrevisionMaree = $mareeDate->getListPrevision();
     // liste des marées extreme de la journée
     $mareeRestrictionTab = array();
     foreach ($spot->getMareeRestriction() as $mareeRestriction) {
         $restriction = array();
         $restriction['hMin'] = $mareeRestriction->getHauteurMin();
         $restriction['hMax'] = $mareeRestriction->getHauteurMax();
         $restriction['state'] = $mareeRestriction->getState();
         $mareeRestrictionTab[] = $restriction;
     }
     $tabDataSinu = self::generateSinousoidal($listePrevisionMaree);
     $date = $listePrevisionMaree->first()->getMareeDate()->getDatePrev();
     // On avance d'heure en heure en comparant y aux restrictions
     // lorsque intersection avec une restriction -> arrondi (la courbe ne correspond pas tout a fait à la réalité)
     for ($houre = CreateNbHoureCommand::HEURE_MATIN; $houre <= CreateNbHoureCommand::HEURE_SOIR; $houre++) {
         // y = a  sin(wt + Phi) + b
         // *** Calcul de la formule de la courbe: y = a  sin(wt + Phi) + b ***
         // t=time en seconde, y=hauteur en metre, w: phase 2 pi / T , T: fréquence
         $hight = MareeTools::getHight($tabDataSinu, $date, $houre + 0.5);
         $tabHoure[$houre]['marée'] = MareeTools::getNbHoureNav($hight, $mareeRestrictionTab);
     }
 }