所以我想知道如果我有一组顶点,找到形状质心的算法是什么?
此外,如果它使算法更短,我的复杂多边形将保存为一组简单的凸多边形,您可以获得它们的顶点。
我找到了上面的等式,但我不知道如何翻译它......
最佳答案
根据新的证据,我坚信你给出的公式是错误的。请允许我提供一种不同的算法。我试图让它看起来像 C++ 风格,但我确信我做错了一些事情。如果你想对这些挑剔,那也没关系。如果您想对它们投反对票,我无法阻止您,但我宁愿您将它们编辑掉以使帖子变得更好。 :-)
// use doubles if appropriate
float xsum = 0.0;
float ysum = 0.0;
float area = 0.0;
for(int i = 0; i < points.size - 1; i++) {
// I'm not a c++ guy... do you need to use pointers? You make the call here
Point p0 = points[i];
Point p1 = points[i+1];
double areaSum = (p0.x * p1.y) - (p1.x * p0.y)
xsum += (p0.x + p1.x) * areaSum;
ysum += (p0.y + p1.y) * areaSum;
area += areaSum;
}
float centMassX = xsum / (area * 6);
float centMassY = ysum / (area * 6);
关于c++ - 找到二维复杂多边形的(质心),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409989/