知道角度是否可以是北、南的最快代码;西方或东方
Fastest code to know if an angle could be North, South;west or East
我有一个处理叠氮运算的代码。我想区分方位角是在0100200300400附近还是在0, PI/2, PI, PI*(3/2), 2*PI, (N, E, S, W)
附近。在大多数情况下,我会收到一个不在这个范围内的角度,所以我需要最快的方法来丢弃,我有这些值。
我想这样做是为了控制纯水平或垂直方位角的线性方程。
当然,我将使用epsilon方法。
所以我会有:
if Math.abs(azi)< 0.0000001 ...
else if Math.abs(azi-100)< 0.0000001 ...
else Math.abs(azi-200)< 0.0000001 ...
else Math.abs(azi-300)< 0.0000001 ...
else Math.abs(azi-400)< 0.0000001 ...
else other
正如你所看到的,我必须检查5个条件来检查我是否有"其他"值。
另一方面,你们知道sin(N)=0,sin(S)=0,cos(E)=0,余弦(W)=0,所以:
if Math.abs(Math.cos(azi) ) < 0.0000001 ...
else if Math.abs(Math.sin(azi) ) < 0.0000001 ...
else other
现在我有两个条件,一个数学三角运算和5个简单的算术运算。正如您在jsperf中看到的,算术速度更快。
jsperf角度检查
我的问题是:还有其他快速的方法吗?
我不确定模数性能与其他算法相比如何,但这样至少可以将其放在一行中。
if ((azi + 0.0000001) % 100) < 0.0000002 ...
else other
除了潜在的舍入错误之外,这应该和您的代码做同样的事情。
我在你的页面上试过了,它的性能似乎快了三倍。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 将 jQuery 代码添加到 Index.aspx 页面
- 为什么忽略了eval()代码中的语法错误
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 知道角度是否可以是北、南的最快代码;西方或东方