从度数获取方向

Posted

技术标签:

【中文标题】从度数获取方向【英文标题】:Get direction from degrees 【发布时间】:2018-02-12 15:59:43 【问题描述】:

我构建了一个能够计算设备航向的小型指南针项目。所以我得到的是一个函数,它为当前航向返回 0° 和 360° 之间的值。

我想从这样的数组中获得当前航向的匹配值:(["North", "North-East", "East", "South-East", "South", "South-West", "West", "North-West"])

(记住:北 = 0° / 359°)


但是我不知道如何得到这样的结果&下面这几行是我到目前为止得到的所有内容,但它似乎不起作用:

var directions = ["North", "North-East", "East", "South-East", "South", "South-West", "West", "North-West"]

function getDirection(heading) 
   var index = Math.round((heading/8)/5,625)
   return directions[index]

任何帮助将不胜感激,在此先感谢。

【问题讨论】:

heading 的可能值是什么? Math.round((heading/8)/5,625) 没有意义 returns a value between 0° and 360° 就像我提到的那样:9 @dfsq 所以heading 是一个介于 0 和 360 之间的值? 我没有时间运行测试,但我认为这只是var index = Math.floor((heading / 22.5) + 0.5) % 16 【参考方案1】:

此解决方案应考虑所有可能的情况:

var index = Math.round(((angle %= 360) < 0 ? angle + 360 : angle) / 45) % 8;

function getDirection(angle) 
    var directions = ['North', 'North-East', 'East', 'South-East', 'South', 'South-West', 'West', 'North-West'];
    var index = Math.round(((angle %= 360) < 0 ? angle + 360 : angle) / 45) % 8;
    return directions[index];


console.log( getDirection(0) );
console.log( getDirection(45) );
console.log( getDirection(180) );
console.log( getDirection(99) );
console.log( getDirection(275) );
console.log( getDirection(-120) );
console.log( getDirection(587) );

【讨论】:

不错的解决方案,但请像这样编辑方向:["North", "North-West", "West", "South-West", "South", "South-East", "East", "North-East"]。正是我正在寻找的解决方案。 @JaneDeverly 是的,谢谢。我刚刚从您的问题:) 中复制了指示,现已修复。 此方法不会返回反转值,例如角度 90,它应该返回东,但函数说西。

以上是关于从度数获取方向的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap - 以度数和磁场为单位的设备方向

rotate默认是rotateZ

如何从 getOrientation() 和 Open CV 代码返回方向角度?

如何获取 iPhone 的当前方向?

iPhone - 我如何获得基于学位的位置的方向

如何在 Gmap.Net 中显示车辆移动方向