【问题标题】:Eccentricity of a 2D convex hull in Python [closed]Python中二维凸包的偏心率[关闭]
【发布时间】:2019-02-23 16:12:59
【问题描述】:

如何在 Python 中计算二维凸包的eccentricity

偏心度:椭圆(或闭合形状)的参数,表示其与圆度的偏差,取值范围为 0(圆)到 1(线)。

【问题讨论】:

  • 发布您尝试过的内容
  • 我投票决定将此问题作为题外话结束,因为除了没有显示任何研究或努力之外,这个问题实际上与编程无关。

标签: python convex-hull feature-descriptor


【解决方案1】:

好吧,对于那些仍然希望看到这个问题的答案的人:如果我们假设闭合形状是椭圆或类似于椭圆,则 eccentricity 定义为 sqrt(square(major_axis_length/2)-square(minor_axis_length/2)),其中长轴和短轴的如图所示。

轴的端点被视为沿每个轴的最小值和最大值。使用 4 个示例地理点(这些也可以是笛卡尔坐标),我们可以这样写:

import numpy as np
from scipy.spatial.distance import euclidean

points = np.array([[50.6636778,5.0939791], [50.7674881,5.4663611], [50.94594, 5.48977], [51.0380754,5.4012648]])

small_latwise = np.min(points[points[:, 0] == np.min(points[:, 0])], 0)
small_lonwise = np.min(points[points[:, 1] == np.min(points[:, 1])], 0)
big_latwise = np.max(points[points[:, 0] == np.max(points[:, 0])], 0)
big_lonwise = np.max(points[points[:, 1] == np.max(points[:, 1])], 0)
distance_lat = euclidean(big_latwise, small_latwise)
distance_lon = euclidean(big_lonwise, small_lonwise)
if distance_lat >= distance_lon:
    major_axis_length = distance_lat
    minor_axis_length = distance_lon
else:
    major_axis_length = distance_lon
    minor_axis_length = distance_lat
a = major_axis_length/2
b = minor_axis_length/2
ecc = np.sqrt(np.square(a)-np.square(b))/a
print(ecc)

产生0.0854194406287

【讨论】:

    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 2017-01-20
    • 2018-01-07
    • 2015-10-12
    • 2012-04-28
    • 2013-09-04
    • 2019-12-24
    • 2018-07-20
    相关资源
    最近更新 更多