【问题标题】:Calculating If 2 Circles On A Map Intersect计算地图上的 2 个圆是否相交
【发布时间】:2012-05-21 16:15:51
【问题描述】:

我在地图上有 2 个点,它们周围有一个区域(比如说 5 英里),我需要弄清楚它们是否相交。例如,假设每个点周围都有一个半径为 5 英里的圆。我需要弄清楚这两个圆圈是否重叠。任何人都可以指出可以实现这一点的数学吗?

顺便说一句,我正在使用 Solr 进行其他地理空间搜索。有谁知道这是否可以用 Solr 完成?

谢谢!

【问题讨论】:

  • 如果是在两点之间,你为什么不检查这两点之间的距离呢? (
  • 那么就是计算两点之间的距离然后减去它们周围的半径那么简单吗?如果 >=0,那么它们相交?
  • 我不明白......当中心之间的距离小于半径之和时,两个圆圈重叠,但我认为这不是你想要的......是不是?
  • 所以公式将类似于:中心 1 和中心 2 之间的距离
  • 是的,这就是公式

标签: solr geospatial latitude-longitude geo


【解决方案1】:

只需计算圆心之间的距离。如果它小于 r1 + r2,则它们重叠。

int distance = calculateDistance();
int r1 = circle1.getRadius();
int r2 circle2.getRadius();

boolean overlap = distance < r1+r2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2012-03-27
    相关资源
    最近更新 更多