function centroid(vertsList)
local numVerts = #vertsList/2
local points = vertsList
table.insert(points, vertsList[1]); table.insert(points, vertsList[2])
local x, y = {}, {}
for i = 1, #points/2 do
x[i], y[i] = points[2*i-1], points[2*i]
end
local xc, yc, eachAreas = {}, {}, {}
local totalArea, xgTemp, ygTemp = 0, 0, 0
for i = 1, numVerts do
xc[i], yc[i] = (x[i] + x[i+1])/3, (y[i] + y[i+1])/3
eachAreas[i] = (x[i+1] * y[i] - y[i+1] * x[i])/2
totalArea = totalArea + eachAreas[i]
xgTemp, ygTemp = xgTemp + eachAreas[i] * xc[i], ygTemp + eachAreas[i] * yc[i]
end
return xgTemp/totalArea, ygTemp/totalArea
end
print(centroid({2, 3, 3, 2, 1, -2, -5, -1, -7, 1, -1, 4}))