language-agnostic - 确定经纬度矩形和球体上的圆是否重叠

标签 language-agnostic math geometry gis trigonometry

假设我有以下内容:

  • 由最小和最大纬度和经度定义的区域(通常是“纬度-长矩形”,尽管它实际上不是矩形,但在某些投影中除外)。
  • 一个圆,由中心纬度/经度和半径
  • 定义

    我如何确定:
  • 两个形状是否重叠?
  • 圆是否完全包含在矩形内?

  • 我正在寻找一个完整的公式/算法,而不是数学课本身。

    最佳答案

  • 是的,如果框角包含圆心。
  • 是的,如果任何方框角在圆心半径内。
  • 是的,如果框包含圆心的经度并且最接近圆心纬度的框纬度的经度交点在圆心半径内。
  • 是的,如果盒子包含圆心的纬度,并且距离最短交点轴承上的圆心半径距离的点“超出”最近的盒子经度;其中最短相交方位是通过找到从圆心到零纬度点的初始方位以及比最近的箱经度“超出”pi/2 的经度来确定的。
  • 不,否则。

  • 假设:
  • 您可以找到从 A 点到 B 点的最小路线的初始方位。
  • 您可以找到两点之间的距离。

  • 第一个检查是微不足道的。第二次检查只需要找到四个距离。第三次检查只需要找到从圆心到(最近的框纬度,圆心经度)的距离。

    第四次检查需要找到最接近圆心的边界框的经线。然后找到距离圆心最远的经线所在的大圆的圆心。求从圆心到大圆心的初始方位。从该轴承上的圆心找到点圆半径。如果该点位于距圆心最近的经度线的另一侧,则圆和边界框在该侧相交。

    在我看来这应该是一个缺陷,但我一直无法找到它。

    我似乎无法解决的真正问题是找到完美包含圆的边界框(对于不包含极点的圆)。纬度最小值/最大值的方位似乎是圆心纬度和圆半径/(球周长/4)的函数。在赤道附近,它下降到 pi/2(东)或 3*pi/2(西)。当中心接近极点且半径接近球周/4 时,方位角接近零(北)或 pi(南)。

    关于language-agnostic - 确定经纬度矩形和球体上的圆是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/394201/

    相关文章:

    language-agnostic - 一个方法究竟什么时候有副作用?

    compiler-construction - 编程语言的标准库是如何实现的?

    python - numpy 如何计算指数?

    java - 根据用户输入计算日历月的第一天

    java - 使用带有参数 capstyle flat 的 JTS BufferOP 时,点几何图形产生空多边形结果

    r - 尝试根据点之间的距离绘制圆圈

    algorithm - 从链表中有效地选择一组随机元素

    language-agnostic - 引导解释器?

    c++ - 在 C++ 中查找序列中的第 N 项

    iOS:如何使用 NSTimer 逐步画圆