gpt4 book ai didi

javascript - 在 Javascript 中达到 16 个可用位

转载 作者:行者123 更新时间:2023-11-29 23:20:22 25 4
gpt4 key购买 nike

我最近看到一个 YouTube 视频,其中讨论了使用空间填充曲线处理 GPS 坐标。提供了一个公式来完成此操作,因此我决定尝试复制它,但我无法弄清楚如何使用 JavaScript 获得相同的结果。

公式如下:

Scale Latitude and longitude to use 16 available bits each:

scaled_x = (-122.4012 + 180) / 360 * 2 ^ 16   // result = 10485
scale_y = (37.7839 + 90) / 180 * 2 ^ 16 // result = 46524

Video Reference


我已经尝试了几种编写公式的方法,但我的结果与我根据演示文稿中显示的内容应该得到的结果相去甚远。要么演示不准确,要么我没有找到正确的方法。

这是我的一些尝试,都失败了。

使用 Pow

base = Math.round((lat + 180) / 360);
scale = Math.pow(base * 2, 16); // Result = 0

精确公式

base = Math.round((lat + 180) / 360 * 2 ^ 16); // Result = 16

内联电源

base = Math.round((lat + 180) / 360 * Math.pow(2, 16)); // Result = -22282

有谁知道需要如何在 JavaScript 中构造此公式才能获得预期结果?

最佳答案

base = Math.round((lat + 180) / 360);
scale = Math.pow(base * 2, 16)

这不起作用,因为您在将值乘以 216 之前对其进行了四舍五入——因此它将四舍五入为 0 或 1。这不是您想要的。

base = Math.round((lat + 180) / 360 * 2 ^ 16); 

在 Javascript 和许多其他语言中,^ 用于按位异或,而不是求幂。 2 ^ 16 是 18,不是 65536。

base = Math.round((lat + 180) / 360 * Math.pow(2, 16));

这看起来是正确的。不过,您引用的结果不适合 lat = -122.4012 - 您是否遗漏了 + 180

关于javascript - 在 Javascript 中达到 16 个可用位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934278/

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