qt 求封闭图形面积

把封闭图形差分成一个个三角形,依次求每个三角形面积。最后一组记得是两个三角形

    /*!
     * \brief 求封闭图形面积
     * points  输入点。第一个list为几张图片、第二个list位每张图片多少点、第三个list为每个点实际坐标
     * areas   输出每个图片面积
     */
void MatUtil::GetCircleArea(
    const QList<QList<QList<double>>> points, QList<double> &areas) {
    areas.clear();
    for(qint32 i = 0; i < points.count(); ++i) {
        double area = 0.0;
        for(qint32 j = 0; j < points[i].count() - 1; ++j) {
            double x1 = points[i][j][0];
            double y1 = points[i][j][1];
            double x2 = points[i][j + 1][0];
            double y2 = points[i][j + 1][1];
            double x3 = 352.0;
            double y3 = 352.0;
            area +=
                0.01 * 0.01 *
                abs(0.5 * (x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2));
        }
        double x1 = points[i][0][0];
        double y1 = points[i][0][1];
        double x2 = points[i][points[i].count() - 1][0];
        double y2 = points[i][points[i].count() - 1][1];
        double x3 = 352.0;
        double y3 = 352.0;
        area +=
            0.01 * 0.01 *
            abs(0.5 * (x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2));
        areas << area;
    }
}
发布了135 篇原创文章 · 获赞 68 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a15005784320/article/details/103835014
QT