Si QGIS está calculando el centroide con GEOS, que es un puerto JTS, entonces el algoritmo es http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html . Sobre la teoría hay un enlace en el javadoc en http://www.faqs.org/faqs/graphics/algorithms-faq/ , vea la sección 2.02: ¿Cómo se puede calcular el centroide de un polígono?
El centroide (también conocido como el centro de masa o centro de gravedad) de un polígono se puede calcular como la suma ponderada de los centroides de una partición del polígono en triángulos. El centroide de un triángulo es simplemente el promedio de sus tres vértices, es decir, tiene coordenadas (x1 + x2 + x3) / 3 y (y1 + y2 + y3) / 3. Esto sugiere primero triangular el polígono, luego formar una suma de los centroides de cada triángulo, ponderada por el área de cada triángulo, la suma total normalizada por el área total del polígono. De hecho, esto funciona, pero hay un método más simple: la triangulación no necesita ser una partición, sino que puede usar triángulos orientados positiva y negativamente (con áreas positivas y negativas), como se usa al calcular el área de un polígono. Esto lleva a un algoritmo muy simple para calcular el centroide, basado en una suma de triángulos centroides ponderados con su área firmada. Se puede considerar que los triángulos son los formados por cualquier punto fijo, por ejemplo, el vértice v0 del polígono y los dos puntos finales de los bordes consecutivos del polígono: (v1, v2), (v2, v3), etc. El área de un triángulo con vértices a, b, c es la mitad de esta expresión: (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.
Me parece que el método es exacto. Si desea comprobar cómo se utilizan los valores de coordenadas y si puede haber errores de redondeo, etc., puede consultar el código fuente de JTS o GEOS.