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}))