Se o QGIS estiver computando o centróide com o GEOS, que é uma porta JTS, o algoritmo é este http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html . Sobre a teoria, existe um link no javadoc para http://www.faqs.org/faqs/graphics/algorithms-faq/ , consulte a seção 2.02: Como o centróide de um polígono pode ser computado ?.
O centróide (também conhecido como centro de massa ou centro de gravidade) de um polígono pode ser calculado como a soma ponderada dos centróides de uma partição do polígono em triângulos. O centróide de um triângulo é simplesmente a média de seus três vértices, ou seja, possui coordenadas (x1 + x2 + x3) / 3 e (y1 + y2 + y3) / 3. Isso sugere primeiro triangular o polígono e formar uma soma dos centróides de cada triângulo, ponderada pela área de cada triângulo, a soma total normalizada pela área total do polígono. Isso realmente funciona, mas existe um método mais simples: a triangulação não precisa ser uma partição, mas pode usar triângulos de orientação positiva e negativa (com áreas positivas e negativas), como é usado ao calcular a área de um polígono. Isso leva a um algoritmo muito simples para calcular o centróide, com base em uma soma de centróides triangulares ponderados com sua área assinada. Os triângulos podem ser considerados aqueles formados por qualquer ponto fixo, por exemplo, o vértice v0 do polígono e os dois pontos finais das arestas consecutivas do polígono: (v1, v2), (v2, v3) etc. A área de um triângulo com vértices a, b, c é metade dessa expressão: (b [X] - a [X]) * (c [Y] - a [Y]) - (c [X] - a [X] ) * (b [Y] - a [Y]);
Code available at ftp://cs.smith.edu/pub/code/centroid.c (3K).
Reference: [Gems IV] pp.3-6; also includes code.
Parece-me que o método é preciso. Se você quiser verificar como os valores das coordenadas são usados e se pode haver erros de arredondamento, etc., consulte o código fonte do JTS ou GEOS.