gpt4 book ai didi

javascript - 知道 Angular 是否为北、南、西或东的最快代码

转载 作者:行者123 更新时间:2023-12-03 11:43:36 29 4
gpt4 key购买 nike

我有一个处理方位 Angular 操作的代码。我想区分方位 Angular 是否接近 0,100,200,300,400 或 0, PI/2, PI, PI*(3/2), 2*PI, (N, E, S, W)。大多数情况下,我会收到一个不在此范围内的 Angular ,因此我需要最快的方法来丢弃我拥有的这些值。

我想这样做是为了控制纯水平或垂直方位 Angular 的线方程。

当然我会使用 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 且 cos(W) =0,因此:

  if  Math.abs(Math.cos(azi) ) < 0.0000001 ...
else if Math.abs(Math.sin(azi) ) < 0.0000001 ...
else other

现在我有两个条件:数学三 Angular 运算和 5 个简单算术运算。正如您在 jsperf 中看到的,算术速度更快。

jsperf angle check

我的问题是:还有其他快速的方法吗?

最佳答案

我不确定模数性能与其他算术相比如何,但这样你至少可以将它放在一行中。

if ((azi + 0.0000001) % 100) < 0.0000002 ...
else other

除了潜在的舍入错误之外,这应该与您的代码执行相同的操作。

I tried it on your page而且它的执行速度似乎快了三倍。

关于javascript - 知道 Angular 是否为北、南、西或东的最快代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26155751/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com