' . __("Satellite") . ' ' . __("AOS Time") . ' ' . __("LOS Time") . ' ' . __("Duration") . ' ' . __("Path") . ' ' . __("Max Elevation (Azimuth)") . ' ' . __("AOS Azimuth") . ' ' . __("LOS Azimuth") . ' '; foreach ($filtered as $pass) { $aos_az = round($pass->aos_az); $los_az = round($pass->los_az); $aos_ics=Predict_Time::daynum2readable($pass->aos, $zone, 'Y-m-d\TH:i:s\z'); $los_ics=Predict_Time::daynum2readable($pass->los, $zone, 'Y-m-d\TH:i:s\z'); $ics='create_ics/'.$pass->satname.'/'.$aos_ics.'/'.$los_ics; $max_el = round($pass->max_el); $max_el_az = round($pass->maxel_az); $scale = 25; $aos=sat2pol($aos_az,0,$scale); $los=sat2pol($los_az,0,$scale); $tca=sat2pol($max_el_az,$max_el,$scale); $control = array(2 * $tca[0] - ($aos[0] + $los[0]) / 2, 2 * $tca[1] - ($aos[1] + $los[1]) / 2); // Calc Controlpoints for Bezier-Curve echo ''; echo '' . ($pass->satname != '' ? $pass->satname : $pass->displayname) . ' '; echo '' . Predict_Time::daynum2readable($pass->aos, $zone, $format) . ''; echo '' . Predict_Time::daynum2readable($pass->los, $zone, $format) . ''; echo '' . returntimediff(Predict_Time::daynum2readable($pass->aos, $zone, $format), Predict_Time::daynum2readable($pass->los, $zone, $format), $format) . ''; echo ' '; echo '' . $max_el . ' ° ('.$max_el_az.' °)'; echo '' . $aos_az . ' ° (' . azDegreesToDirection($pass->aos_az) . ')'; echo '' . $los_az . ' ° (' . azDegreesToDirection($pass->los_az) . ')'; echo ''; } echo ''; } else { echo '
'; echo '

'.__('Search failed!').'

'; echo '

'.__('No passes found. Please check the input parameters.').'

'; echo '
'; } function sat2pol($azimuth_deg, $elevation_deg,$scale) { $azimuth_rad = deg2rad(270+$azimuth_deg); $r = (90 - $elevation_deg)/90; $x = ($r * cos($azimuth_rad)*($scale / 10 * 9))+$scale; $y = ($r * sin($azimuth_rad)*($scale / 10 * 9))+$scale; return array($x, $y); } function returntimediff($start, $end, $format) { $datetime1 = DateTime::createFromFormat($format, $end); $datetime2 = DateTime::createFromFormat($format, $start); $interval = $datetime1->diff($datetime2); $diff = sprintf('%02d', (($interval->h*60)+$interval->i)).':'.sprintf('%02d', $interval->s).' '.__("min"); return $diff; } function azDegreesToDirection($az = 0) { $i = floor($az / 22.5); $m = (22.5 * (2 * $i + 1)) / 2; $i = ($az >= $m) ? $i + 1 : $i; return trim(substr('N NNENE ENEE ESESE SSES SSWSW WSWW WNWNW NNWN ', $i * 3, 3)); }