你對中心的定義一般沒有意義。
要看到這只是在一個平面上繪製三個不對齊的點,並計算出一個只有三個點通過的圓。顯然你的三角形的中心必須是這個圈子的中心。
現在畫出第四點,它不位於圓上並形成四邊形多邊形。什麼是中心?這個平面沒有一點與所有頂點等距。要注意的是,即使三角形使用與頂點等距離的點,也可以給出遠離多邊形的點和遠處的點,並且在數值上也不穩定(給定任意ε> 0且M> 0,您始終可以構建一個其中頂點的特定移動距離小於ε的三角形移動中心大於M的距離)。
計算簡單的常用「中心」是所有頂點的平均值,邊界的平均值,質心或甚至只是軸對齊邊界框的中心。但是,如果多邊形不是凸面的,它們都可以落在多邊形之外,但在您的情況下它們可能會工作。
最簡單的合理的(因爲它不依賴於座標系)爲頂點的重心(在Python代碼):
xc = sum(x for (x, y) in points)/len(points)
yc = sum(y for (x, y) in points)/len(points)
的一些壞事,但它只是分裂的一面該多邊形爲您提供了一個不同的中心(換句話說,它取決於頂點而不是由多邊形界定的一組點)。依賴於多邊形最簡單的是IMO的邊界的重心:
sx = sy = sL = 0
for i in range(len(points)): # counts from 0 to len(points)-1
x0, y0 = points[i - 1] # in Python points[-1] is last element of points
x1, y1 = points[i]
L = ((x1 - x0)**2 + (y1 - y0)**2) ** 0.5
sx += (x0 + x1)/2 * L
sy += (y0 + y1)/2 * L
sL += L
xc = sx/sL
yc = sy/sL
他們兩人擴展到3D是平凡的...只是使用相同的公式新增z
。在一個普通的(不一定是凸的,不一定是簡單連接的)多邊形的情況下,我發現有用但是不是簡單計算的「中心」是距離它的最大距離的(內)點,邊界(換句話說就是「最內在的」一點)。
在這種情況下,我使用離散(位圖)表示和高斯距離變換。
'mean(x)mean(y)'?我不確定所有多邊形(例如(0,0),(0,1),(0,-1),(3,0))處的四邊形點是否存在與所有頂點等距的點。 – Hugh
這不是一個四邊形,而是一個T形 – Aeronaelius
一般來說,大多數多邊形不會有與所有頂點等距的點。你知道他們是經常的嗎? – PeterM