从度数获取方向
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,它应该返回东,但函数说西。以上是关于从度数获取方向的主要内容,如果未能解决你的问题,请参考以下文章