Php 风玫瑰转换度(以基点为单位)

Php 风玫瑰转换度(以基点为单位),php,Php,我用PHP编写了一个脚本来转换基数点中的度: <?php $deg = 0; $cardinal = null; $deg = str_replace(',','.',$argv[1]); echo "Degree: ". $deg ."\t"; if(($deg>=0 && $deg <= 11.25) || ($deg > 348.75 && $deg <= 360) ){ $cardinal = 'N';} elseif(

我用PHP编写了一个脚本来转换基数点中的度:

<?php
$deg = 0;
$cardinal = null;

$deg = str_replace(',','.',$argv[1]);
echo "Degree: ". $deg ."\t";

if(($deg>=0 && $deg <=  11.25) || ($deg > 348.75 && $deg <= 360) ){ $cardinal = 'N';}
elseif($deg > 11.25  && $deg <=  33.75  ){ $cardinal = 'NNE';}
elseif($deg > 33.75  && $deg <=  56.25  ){ $cardinal = 'NE';}
elseif($deg > 56.25  && $deg <=  78.75  ){ $cardinal = 'ENE';}
elseif($deg > 78.75  && $deg <=  101.25 ){ $cardinal = 'E';}
elseif($deg > 101.25 && $deg <=  123.75 ){ $cardinal = 'ESE';}
elseif($deg > 123.75 && $deg <=  146.25 ){ $cardinal = 'SE';}
elseif($deg > 146.25 && $deg <=  168.75 ){ $cardinal = 'SSE';}
elseif($deg > 168.75 && $deg <=  191.25 ){ $cardinal = 'S';}
elseif($deg > 191.25 && $deg <=  213.75 ){ $cardinal = 'SSW';}
elseif($deg > 213.75 && $deg <=  236.25 ){ $cardinal = 'SW';}
elseif($deg > 236.25 && $deg <=  258.75 ){ $cardinal = 'WSW';}
elseif($deg > 258.75 && $deg <=  281.25 ){ $cardinal = 'W';}
elseif($deg > 281.25 && $deg <=  303.75 ){ $cardinal = 'WNW';}
elseif($deg > 303.75 && $deg <=  326.25 ){ $cardinal = 'NW';}
elseif($deg > 326.25 && $deg <=  348.75 ){ $cardinal = 'NNW';}
else{ $cardinal = 'invalid';}

echo "Cardinal point: ". $cardinal ."\n";
这产生了想要的结果:

Degree: 0.00    Cardinal point: N
Degree: 0.01    Cardinal point: N
Degree: 0.02    Cardinal point: N
Degree: 0.03    Cardinal point: N
...
Degree: 11.24   Cardinal point: N
Degree: 11.25   Cardinal point: N
Degree: 11.26   Cardinal point: NNE
Degree: 11.27   Cardinal point: NNE
Degree: 11.28   Cardinal point: NNE
...
Degree: 33.74   Cardinal point: NNE
Degree: 33.75   Cardinal point: NNE
Degree: 33.76   Cardinal point: NE
Degree: 33.77   Cardinal point: NE
所以我想:“有可能做得更好吗?”
有一种最简单的方法可以做到这一点?

不是从一开始就使用我的代码,而是在我使用的库中

function windRose($item) {
     $winddir[]="N";
     $winddir[]="NNE";
     $winddir[]="NE";
     $winddir[]="ENE";
     $winddir[]="E";
     $winddir[]="ESE";
     $winddir[]="SE";
     $winddir[]="SSE";
     $winddir[]="S";
     $winddir[]="SSW";
     $winddir[]="SW";
     $winddir[]="WSW";
     $winddir[]="W";
     $winddir[]="WNW";
     $winddir[]="NW";
     $winddir[]="NNW";
     $winddir[]="N";
     return $winddir[round($item*16/360)];
}

echo windRose("220"); // returns SW

不是从一开始我的代码,而是在我使用的库中

function windRose($item) {
     $winddir[]="N";
     $winddir[]="NNE";
     $winddir[]="NE";
     $winddir[]="ENE";
     $winddir[]="E";
     $winddir[]="ESE";
     $winddir[]="SE";
     $winddir[]="SSE";
     $winddir[]="S";
     $winddir[]="SSW";
     $winddir[]="SW";
     $winddir[]="WSW";
     $winddir[]="W";
     $winddir[]="WNW";
     $winddir[]="NW";
     $winddir[]="NNW";
     $winddir[]="N";
     return $winddir[round($item*16/360)];
}

echo windRose("220"); // returns SW

完美!干得好,完美!干得好