java - 生成一个偏离两极的随机纬度

标签 java algorithm coordinates

我正在使用以下代码随机导出均匀分布的纬度/经度

public static LatLng nextLatLng(){
    return new LatLng((r.nextDouble() * -180.0)+ 90.0,
                      (r.nextDouble() * -360.0)+ 180.0);  

我使用派生的纬度/经度来检索谷歌街景 View

streetView.setPosition (nextLatLng(), ONE_THOUSAND_KM_RADIUS);

我注意到我的结果中有很大一部分 (~10%) 将我带到了南极洲。我认为这是因为经度越靠近两极越短,并且南极洲的街景位置越少。

什么是倾斜随机 LatLng 生成器以减少生成南极点的好算法?

最佳答案

如果你想在地球表面统一选取随机点,你需要遵循Sphere Point Picking的规则。 .否则,您的 sample 将像您描述的那样“聚集”在两极附近。

double u = r.nextDouble();
double v = r.nextDouble();

double latitude = Math.toDegrees(Math.acos(u*2-1)) - 90;
double longitude = 360 * v - 180;

关于java - 生成一个偏离两极的随机纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735998/

相关文章:

java - 我可以在工厂中创建 Callable 并通过调度程序执行它们吗?

java - 关于在Java中使用继承时的构造函数初始化顺序

python - 在另一个数组中搜索一个数组的值,如果找不到则修改数组 - numpy

algorithm - Scala/functional/without libs - 检查其他字符串排列是否

具有自定义比较功能的 C++ 优先级队列在 Push() 上的行为不正确

java - 获取手机屏幕中心坐标

c# - 单元格的最小最大坐标,在 c# 中给定单元格长度

java - 如何在 Android 中使用计时器?

json - 由于使用 Google Maps API 未捕获异常 'NSRangeException' 而终止应用程序

java - Twilio Sip Dial 来电