【问题标题】:Find the center of the circle given a LocationCollection在给定 LocationCollection 的情况下找到圆的中心
【发布时间】:2012-05-10 23:13:26
【问题描述】:

我有一堆经纬度的 LocationCollection,我需要获取圆心的纬度/经度。如何计算圆的中心坐标?

编辑:LocationCollection 中的纬度/经度构成了整个圆的圆周。很抱歉造成混乱。

【问题讨论】:

  • 请定义“圆心”的含义。我猜你想计算一种重心,看这个:en.wikipedia.org/wiki/Centroid
  • 您还有其他信息吗?半径将是最有帮助的。圆方程的标准形式是 (x-h)^2+(y-k)^2=r^2 其中 (h,k) 是圆心,r 是半径,(x,y) 是圆上的任意点圆圈。如果您没有半径或直径,那么蛮力方法可能是通过找到集合中两点之间的最大距离来尝试找到直径。当然,这仅在集合中有两个相反点时才有效。如果你不能确定地找到直径,你至少知道直径是>你找到的值。
  • @James 没有半径,也没有任何其他参数,除了每个圆度的纬度/经度。
  • @Bahamut:你的意思是说你的收藏包含 360 个等距围绕圆周的位置吗?

标签: c# silverlight math


【解决方案1】:

你指的是哪个圈子?请记住,纬度是一个圆圈,经度是另一个圆圈,所以我想您希望坐标位于球体的中心。我可以尝试向您解释解决方案,但 this answer 足以让您入门。

【讨论】:

    【解决方案2】:

    如果您的收藏中有 3 个位置,并且位置圈的半径不是太大(小于 50 公里左右),那么使用计算 circle from 3 points 的公式不会出错(谷歌)并假装(大约)球形地球上的纬度/经度坐标是笛卡尔平面上的 y/x 坐标。

    如果您有 3 个以上的位置,那么对于一个圆圈来说您有太多的位置 - 问题不在于您无法从(例如)8 个位置计算圆圈,而是您可以计算 8-choose-3==56 圆圈和它们不太可能重合。在这种情况下,您可以进行某种平均以找出一个圆圈来将它们全部绑定。

    随着您正在寻找的圆的半径变大(我在这里故意模糊),那么与地球表面的平面近似会变得更糟,并且通过平面几何近似椭圆几何变得越来越不合适。例如,在球体的表面上,任何 2 个点都定义了一个圆(穿过两个点的大圆),除非它们是对映的,在这种情况下它们定义了无限个圆。现在你需要变得更聪明......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      相关资源
      最近更新 更多