正在开发一种工具,根据给定机场的真实世界风,为飞行模拟爱好者推荐跑道.最终目标是比较并返回列表中可用跑道的列表,列表顶部显示最小的风差异.
我想说,我可能有95%的需要,但当风向接近0度(指南针上360度)时,会变得很滑.
如果跑道航向为029,风向为360,则两者相差仅29度,但我所写的公式显示相差331度.
作为比较的一部分,我try 过使用abs()进行实验,但没有取得任何成果.我将把我目前的结果链接到这里:https://extendsclass.com/php-bin/7eba5c8
try 切换风向和跑道方向的比较(从另一个中减go 一个,然后从另一个方向进行),结果相同.
我确信,关键在于一些我无法掌握的三行小胡说八道(我想,自学成才的牛仔程序员的缺点).
大约11年前,我看到一篇关于如何用C#实现这一点的帖子,但我从来没有在编程世界的那个特别深沉、黑暗的角落里捣乱过.
代码如下:
<?php
echo "<pre>\n";
//Dummy Runways. Will be replaced by data from AVWX
$rwy_hdgs = array(
"04R" => "029",
"04L" => "029",
"22R" => "209",
"22L" => "209",
"03R" => "029",
"03L" => "029",
"21L" => "216",
"21R" => "216",
"09L" => "089",
"09R" => "089",
"27R" => "269",
"27L" => "269"
);
//Dummy Wind Heading. Will be replaced by data from AVWX
$wind_dir = "360";
$runways = array();
$i = 1;
foreach($rwy_hdgs as $key => $value)
{
$diff = $value - $wind_dir;
$runways[$i]["rwy"] = $key;
$runways[$i]["hdg"] = $value;
$runways[$i]["diff"] = abs($diff);
$i++;
}
//Select "diff" value
$diff = array_column($runways, "diff");
//Sort $runways by difference betweeen wind and runways, with smallest value first
array_multisort($diff, SORT_ASC, $runways);
foreach ($runways as $runway){
echo "Wind Heading: " . $wind_dir . "\n";
echo "Runway: " . $runway["rwy"] . "\n";
echo "Heading: " . $runway["hdg"] . "\n";
echo "Variance: " . $runway["diff"] . "°\n\n";
}
echo "</pre>\n";
?>