function getSunTimes($fh, $La, $Lo, $mois, $jour) { $returnArray = array("sunrise" => null, "sunset" => null); if ($fh == "") { $fh = date("H") - gmdate("H"); } if ($La == "") { $La = 48.833; } if ($Lo == "") { $Lo = -2.333; } if ($mois == "") { $mois = date("m"); } if ($jour == "") { $jour = date("d"); } // Fuseau horaire et coordonnées géographiques $k = 0.0172024; $jm = 308.67; $jl = 21.55; $e = 0.0167; $ob = 0.4091; $PI = 3.1415926536; //Hauteur du soleil au lever et au coucher $dr = $PI / 180; $hr = $PI / 12; $ht = -40 / 60; $ht = $ht * $dr; $La = $La * $dr; $Lo = $Lo * $dr; //Date if ($mois < 3) { $mois = $mois + 12; } //Heure TU du milieu de la journée $h = 12 + $Lo / $hr; //Nombre de jours écoulés depuis le 1 Mars O h TU $J = floor(30.61 * ($mois + 1)) + $jour + $h / 24 - 123; //Anomalie et longitude moyenne $M = $k * ($J - $jm); $L = $k * ($J - $jl); //Longitude vraie $S = $L + 2 * $e * Sin($M) + 1.25 * $e * $e * Sin(2 * $M); //Coordonnées rectangulaires du soleil dans le repère équatorial $X = Cos($S); $Y = Cos($ob) * Sin($S); $Z = Sin($ob) * Sin($S); //Equation du temps et déclinaison $R = $L; $rx = Cos($R) * $X + Sin($R) * $Y; $ry = -Sin($R) * $X + Cos($R) * $Y; $X = $rx; $Y = $ry; $ET = atan($Y / $X); $DC = atan($Z / Sqrt(1 - $Z * $Z)); //Angle horaire au lever et au coucher $cs = (Sin($ht) - Sin($La) * Sin($DC)) / Cos($La) / Cos($DC); $CalculSol = ""; if ($cs > 1) { $CalculSol = "Ne se lève pas"; } if ($cs < -1) { $CalculSol = "Ne se couche pas"; } if ($cs == 0) { $ah = $PI / 2; } else { $ah = atan(Sqrt(1 - $cs * $cs) / $cs); } if ($cs < 0) { $ah = $ah + $PI; } //Lever du soleil $Pm = $h + $fh + ($ET - $ah) / $hr; if ($Pm < 0) { $Pm = $Pm + 24; } if ($Pm > 24) { $Pm = $Pm - 24; } $hs = floor($Pm); $Pm = floor(60 * ($Pm - $hs)); if (strlen($hs) < 2) { $hs = "0" . $hs; } if (strlen($Pm) < 2) { $Pm = "0" . $Pm; } if ($CalculSol == "") { $lev = $hs . ":" . $Pm; } else { $lev = "00:00"; } //Coucher du soleil $Pm = $h + $fh + ($ET + $ah) / $hr; if ($Pm > 24) { $Pm = $Pm - 24; } if ($Pm < 0) { $Pm = $Pm + 24; } $hs = floor($Pm); $Pm = floor(60 * ($Pm - $hs)); if (strlen($hs) < 2) { $hs = "0" . $hs; } if (strlen($Pm) < 2) { $Pm = "0" . $Pm; } if ($CalculSol == "") { $couch = $hs . ":" . $Pm; } else { $couch = "00:00"; } $returnArray["sunrise"] = date("d/M/y G:i:s", strtotime($lev)); $returnArray["sunset"] = date("d/M/y G:i:s", strtotime($couch)); $returnArray["sunrise"] = DateTime::createFromFormat('H:i', $lev); $returnArray["sunset"] = DateTime::createFromFormat('H:i', $couch); return $returnArray; }
function SumSizeOneGoods($xi, $yi, $zi, $qty) { // îòñîðòèðîâàòü ãðóçû ïî âîçðàñòàíèþ $ar = array($xi, $yi, $zi); sort($ar); //print_r($ar); if ($qty <= 1) { return array('X' => $ar[0], 'Y' => $ar[1], 'Z' => $ar[2]); } $x1 = 0; $y1 = 0; $z1 = 0; $l = 0; $max1 = floor(Sqrt($qty)); for ($y = 1; $y <= $max1; $y++) { $i = ceil($qty / $y); $max2 = floor(Sqrt($i)); for ($z = 1; $z <= $max2; $z++) { $x = ceil($i / $z); $l2 = $x * $ar[0] + $y * $ar[1] + $z * $ar[2]; if ($l == 0 or $l2 < $l) { $l = $l2; $x1 = $x; $y1 = $y; $z1 = $z; } } } // êîëè÷åñòâî òîâàðîâ ïî ñòîðîíàì //echo '<br>êîëè÷åñòâî òîâàðîâ ïî ñòîðîíàì: x1=', $x1,' , y1=', $y1,' , z1=', $z1; // èòîãîâûå ãàáàðèòû òîâàðà //echo '<br>èòîãîâûå ãàáàðèòû òîâàðà: x1=', $x1*$ar[0],' , y1=', $y1*$ar[1],' , z1=', $z1*$ar[2]; return array('X' => $x1 * $ar[0], 'Y' => $y1 * $ar[1], 'Z' => $z1 * $ar[2]); }
function SumSizeOneGoods($xi, $yi, $zi, $qty) { // ????????????? ????? ?? ??????????? $ar = array($xi, $yi, $zi); sort($ar); //print_r($ar); if ($qty <= 1) { return array('X' => $ar[0], 'Y' => $ar[1], 'Z' => $ar[2]); } $x1 = 0; $y1 = 0; $z1 = 0; $l = 0; $max1 = floor(Sqrt($qty)); for ($y = 1; $y <= $max1; $y++) { $i = ceil($qty / $y); $max2 = floor(Sqrt($i)); for ($z = 1; $z <= $max2; $z++) { $x = ceil($i / $z); $l2 = $x * $ar[0] + $y * $ar[1] + $z * $ar[2]; if ($l == 0 or $l2 < $l) { $l = $l2; $x1 = $x; $y1 = $y; $z1 = $z; } } } // ?????????? ??????? ?? ???????? //echo '<br>?????????? ??????? ?? ????????: x1=', $x1,' , y1=', $y1,' , z1=', $z1; // ???????? ???????? ?????? //echo '<br>???????? ???????? ??????: x1=', $x1*$ar[0],' , y1=', $y1*$ar[1],' , z1=', $z1*$ar[2]; return array('X' => $x1 * $ar[0], 'Y' => $y1 * $ar[1], 'Z' => $z1 * $ar[2]); }
/** * 火星坐标经度偏移量辅助计算函数 * * @param float $lng * 经度,竖线,0-180,中国在东经72.004-137.8347 * @param float $lat * 纬度,横线,0-90,中国在北纬0.8293-55.8271 * @return number * @version 0.13.5.28 */ private function lng_offset($lng, $lat) { $lng -= 105; $lat -= 35; $ret = 300 + $lng + 2 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * Sqrt(Abs($lng)); $ret += (20 * sin(6 * $lng * M_PI) + 20 * sin(2 * $lng * M_PI)) * 2 / 3; $ret += (20 * sin($lng * M_PI) + 40 * sin($lng / 3 * M_PI)) * 2 / 3; $ret += (150 * sin($lng / 12 * M_PI) + 300 * sin($lng / 30 * M_PI)) * 2 / 3; return $ret; }