Я пытаюсь определить центр масс поверхности, определенный набором СЛУЧАЙНЫХ неэквивалентно расположенных точек x, y.
Вот быстрый набор тестов, чтобы показать, что я имею в виду.
from scipy.spatial import ConvexHull
import numpy as np
import matplotlib.pyplot as plt
def PolyArea(x, y):
return 0.5*np.abs(np.dot(x, np.roll(y,1))-np.dot(y, np.roll(x,1)))
points = np.random.rand(30, 2) # 30 random points in 2-D
hull = ConvexHull(points)
plt.plot(points[:,0], points[:,1])
for simplex in hull.simplices:
plt.plot(points[simplex, 0], points[simplex, 1])
plt.plot(points[hull.vertices, 0], points[hull.vertices, 1], 'r--', lw=2)
plt.show()
Отсюда получаем:
x = points[hull.vertices, 0]
y = points[hull.vertices, 1]
surface_size = PolyArea(x, y)
Я хочу определить центр масс области по заданным точкам (x, y), а не по среднему значению точек. Я знаю, что это рассчитывается по двойному интегралу поверхности (см .: http://tutorial.math.lamar.edu/Classes/CalcII/CenterOfMass.aspx),, но я не знаю, как реализовать это в Python.
Заранее спасибо.