c++ - 找到二维复杂多边形的(质心)

标签 c++ algorithm centroid

所以我想知道如果我有一组顶点,找到形状质心的算法是什么?

此外,如果它使算法更短,我的复杂多边形将保存为一组简单的凸多边形,您可以获得它们的顶点。

an image

我找到了上面的等式,但我不知道如何翻译它......

最佳答案

根据新的证据,我坚信你给出的公式是错误的。请允许我提供一种不同的算法。我试图让它看起来像 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/

相关文章:

c++ - 使用 toLatin1() 将 QString 转换为 QByteArray 会出现链接器错误

c++ - 如何获取 vector 队列的前端或顶部元素?

algorithm - 高效定时器算法

algorithm - 尝试字节编译时提高 Racket 代码的性能和错误

c++ - 模板函数指针: "overloaded function with no contextual type information"

c++ - 覆盖来自 kernel32 的调用

python - 基于时间的算法中的优化

java - 用于文本分类的质心算法,工具?

python - 在python中向散点图添加一个点

machine-learning - 用于文档分类、阈值检测的质心算法