首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在CGAL中获得一般多边形集的面积?

在CGAL中,可以通过以下步骤获得一般多边形集的面积:

  1. 导入所需的CGAL库和相关头文件。
  2. 定义一个多边形集合,可以使用CGAL的Polygon_with_holes_2类来表示。
  3. 创建一个Polygon_with_holes_2对象,并添加多边形和内部孔洞。
  4. 调用CGAL的area()函数,传入Polygon_with_holes_2对象作为参数,以计算多边形集合的面积。
  5. 获取计算得到的面积值。

以下是一个示例代码:

代码语言:txt
复制
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Polygon_with_holes_2.h>
#include <CGAL/Boolean_set_operations_2.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef Kernel::Point_2 Point_2;
typedef CGAL::Polygon_2<Kernel> Polygon_2;
typedef CGAL::Polygon_with_holes_2<Kernel> Polygon_with_holes_2;

double getPolygonSetArea(const std::vector<Polygon_2>& polygons)
{
    // 创建一个Polygon_with_holes_2对象
    Polygon_with_holes_2 polygonSet;

    // 添加多边形和内部孔洞
    for (const auto& polygon : polygons)
    {
        polygonSet.add_hole(polygon.holes_begin(), polygon.holes_end());
    }

    // 计算多边形集合的面积
    double area = CGAL::to_double(polygonSet.area());

    return area;
}

int main()
{
    // 创建多边形集合
    std::vector<Polygon_2> polygons;

    // 添加多边形到集合中
    // ...

    // 调用函数计算面积
    double area = getPolygonSetArea(polygons);

    // 输出面积值
    std::cout << "Polygon set area: " << area << std::endl;

    return 0;
}

请注意,以上示例代码仅展示了如何在CGAL中获得一般多边形集的面积,并未涉及具体的腾讯云产品和链接地址。如需了解腾讯云相关产品和产品介绍,请参考腾讯云官方文档或咨询腾讯云官方支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CGAL 一般多边形

CGAL 一般多边形 : rigid motions and area 标签 c++ geometry transformation area cgal 调查 this question ,我将不得不处理其边界由线段和圆弧组成形状...为了计算面积,我可以使用鞋带方法一种变体,并进行调整以应对圆弧。...手册示例打印了有关支持圈详细信息,并深入挖掘了标题,我发现每个 curve因为我多边形确实有一个 supporting_circle() 方法,所以我想它实际上是一个 Arr_circle_segment_traits..._2::X_monotone_curve_2 .所以我应该能够获得足够圆信息来计算面积。...另一方面,CGAL 通过模板参数进行自定义方式,我可能只是缺少一种方法来执行这些适用于圆形线段操作,尽管它可能不适用于其他一般多边形。您知道我可以使用任何快捷方式吗?

27550

CGAL功能大纲

官网网址:https://www.cgal.org/ CGAL,提供了计算几何相关数据结构和算法,: (1)三角剖分。...二维可视域计算2D Visibility Computation 这个包提供了几个变量来计算二维多边形区域内一个点可见面积。...在CSG,实体表示为基本实体对象(块、棱镜、柱面或环面)布尔组合。对象用树结构隐式表示,叶节点表示原始对象,内部节点表示布尔运算或刚性运动(平移和旋转)。...这些点可以由孤立顶点、孤立边、没有孔凸面和开闭固体组成。因此,可以计算平移机器人配置空间(即使是在狭窄通道场景)以及一些图形操作,例如滑翔操作,它计算沿多边形线移动多面体扫过。...表面可能表现出一维特征(折痕边缘)和零维特征(作为角尖、尖端或飞镖奇异点),这些特征在网格必须相当近似。此外,这些算法还支持多核共享内存架构,以利用可用并行性。

1.1K10
  • 【C++】开源:CGAL计算几何库配置使用

    CGAL 提供了广泛计算几何算法和数据结构,包括但不限于以下领域: 1.2D 和 3D 几何:CGAL 提供了各种数据结构和算法,用于处理二维和三维点、线段、多边形、曲线、曲面等几何对象。...4.几何优化:CGAL 实现了多个几何优化算法,用于求解几何优化问题,最小凸包、最小旋转包、最长空间线段等。...5.多边形和非封闭曲线处理:CGAL 支持进行多边形布尔运算、多边形修复、多边形拟合、轮廓计算等操作。它还提供了对非封闭曲线操作和处理。...6.曲面重建:CGAL 提供了多个用于重建曲面的算法,包括点云重建、隐函数重建、流形重建等。这些算法可用于从离散生成平滑曲面模型。...7.拓扑关系和空间搜索:CGAL 支持计算几何对象之间拓扑关系,相交、包含、相交点等。它还提供了用于空间搜索数据结构和算法, kd-树、R 树等。

    25410

    CGAL 计算两个凸多边形相交面积

    我正在使用 CGAL 计算两个凸多边形相交面积。在对 this 接受答案中发布了执行此操作简短演示代码。问题。...但是,当我修改该代码以使用我感兴趣多边形时,CGALCGAL::intersection() 例程深处抛出运行时异常。...这是一个简短示例代码,它是从上面链接 SO 问题中复制粘贴,除了它使用我自己多边形并打印一些关于每个多边形诊断信息以表明它们是凸面的并使用 CCW 绕组订单。...最佳答案 我可以重现此错误(在带有 clang++ MacOS 上使用 CGAL 4.9)。据我了解,这种类型未捕获异常不应该发生,换句话说,您发现了 CGAL 错误。...因此,请按照错误消息说明提交错误报告 –– 您没有发布部分(或者可能因为版本不同而没有发布?)

    37640

    通过CGAL将一个多边形剖分成Delaunay三角网

    概述 对于平面上,通过Delaunay三角剖分算法能够构建一个具有空圆特性和最大化最小角特性三角网。...实现 因为要显示三角网效果,所以我在《使用QT绘制一个多边形》这篇博文提供QT界面上进行修改,正好这篇文章提供代码还实现了在QT绘制多边形功能。...关于网格化以及三角网剖分,在CGAL中提供了非常详尽繁复解决方案,我这里选择了CGAL::refine_Delaunay_mesh_2这个接口,这个接口能够将多边形区域构建成一个Delaunay三角网...结果 在QT界面上绘制一个多边形,只用多边形点,最后三角网格效果: ?...通过这篇博文《矢量线一种栅格化算法》提供栅格化算法,可以将一个多边形栅格化,这样就可以得到一个栅格多边形,通过这个算法网格化,最后效果: ?

    2.9K20

    如何使用CGAL轻松检索两条相交多边形相交线

    如何使用CGAL轻松检索两条相交多边形相交线(从第一个交点到最后一个交点)。看到图像澄清,绿线是我想要。...使用CGAL获取多边形相交线 Two intersecting polygons with intersection line 目前我使用下面的算法,在那里我得到交集多边形,然后发现这是两个多边形边界点...有人可以告诉我这是否是正确方法,或者指出如何更好地做到这一点。 来源 2017-08-02 D.J. Klomp A 回答 2 将两个多边形线段插入到2D排列。然后找到具有度4顶点。...= arr.end_vertices(); ++it) { if (4 == it->degree()) ... } 可以避开“段”名单建设,而是直接将多边形细分成使用迭代器适配器安排...(这是纯粹通用编程,与CGAL无关。)

    33740

    CGAL使用心得 转

    在这两个图形,要快速找到每一个最小封闭区域和一个由这些最小封闭区域组成一个最大封装区域。这样算法,有,像最常见建构多边形TOPO,然后用雷达扫描法,可以求出来。...在慢慢学习过程,我发现CGAL是一个对精度要求比效率要求更高库(这一度让我想放弃CGAL,但后来,发现再差效率,都比一般算法求解出来速度要快),而我们能够提供数据,精度是达不到。...于是,我开始跟踪CGAL构建ARRANGEMENT过程,发现CGAL,大部分赋值操作,都是直接内存拷贝。....每个部分都有一些对这些对象进行操作函数.一般有访问函数(比如一个点坐标),测试点和这个对象位置关系,得到对象包围盒子函数,长度,面积等等.核心中还包含一些基本超作,比如仿射变幻,相交检测与计算...CGAL核心说明 我们学习对象是d维欧几里德仿射空间.这里我们主要考虑2维和3维得情况.空间中对象是有点组成.表示点一般方法是使用笛卡儿坐标.它假定了一个参照框架(一个原点和d个正交轴).这个框架中一个点是由一个

    85830

    【三维算法:CGAL

    三维算法:CGAL 复制代码 头大啊,自己写三维算法太累了,还是引入开源库吧 CGAL是计算几何算法库,是一个大型C++库几何数据结构和算法,Delaunay三角网、网格生成、布尔运算多边形以及各种几何处理算法...安装在VS必须安装QT VS TOOLS功能插件,来支持QTUI界面,不然在VS中会识别不出来        #include “ui_ImageInterface.h” 这个在QT对应 ImageInterface.ui...要么用VS右键编译生成头文件,要么在QTbin找 uic.exe 进行cmd命令生成        注意:如果出现无法识别 CGAL::QGLViewer::staticMetaObject 这个东西跟...QObject相关联,而它识别需要QTbin找 moc.exe 进行cmd命令生成一个.cpp 最后链接到代码上 复制代码 CGAL必须事先用cmake编译出 CGAL_Core-vc141...::draw(p); return EXIT_SUCCESS; } //带洞多边形 //draw_polygon_with_holes.cpp #include <CGAL/Exact_predicates_inexact_constructions_kernel.h

    48120

    在 PDF 文档测量长度、周长和面积

    在建筑、工程和施工(AEC)行业,对 PDF 测量工具需求变得至关重要。现在,让我们深入了解测量工具,学习如何在 PDF 上进行测量。...该距离工具可确保建筑师和设计师轻松获得长度测量值,并将其与实际距离进行比较。用于测量周长折线折线作为周长工具,可方便地测量多个点之间距离。...在端点处双击鼠标,即可立即显示周长和每条线单个测量值。多边形和矩形用于测量周长和面积多边形和矩形,用于精确测量面积和周长。多边形适用于不规则形状,而矩形适用于规则矩形。...在多边形模式下,只需单击起点,选择后续点直至形成封闭图形,然后双击即可立即显示中心点面积和周长。在矩形模式下,选择矩形左上角点,拖动到对边点,然后单击释放。它将自动测量这个规则矩形面积和周长。...更多参数和功能这些测量工具提供广泛自定义选项,允许用户设置各种参数,自定义线条、调整精度、校准长度、抓取、放大等。

    22510

    BIM与点云:一种基于航空LiDAR点云大规模建筑重建

    面先验约束效果 实验与分析 我们方法使用CGAL在C++实现,所有实验都在一台搭载3.5 GHz AMD Ryzen Threadripper 1920X处理器和64 GB内存台式电脑上进行。...从这些视觉结果可以看到,尽管建筑物具有不同风格多样化结构,输入点云具有不同密度和不同级别的噪声、离群值和缺失数据,但该方法成功地获得了视觉上合理重建结果。...在表1,我们报告了在图6显示建筑物上定量结果统计数据,可以看到,我们方法获得了良好重建精度,即所有建筑物均方根误差(RMSE)在0.04米至0.26米之间,这对于从嘈杂和稀疏航空LiDAR...从表1面数列可以观察到,我们结果是简化多边形模型,比常用方法(Poisson表面重建方法)更稠密。 检测到平面片段数量与建筑物重建时运行时间。...将我们方法与两种成功开源方法进行了比较,即2.5D Dual Contouring(专门用于城市建筑)和PolyFit(用于一般分段平面对象),在AHN3 、DALES和Vaihingen数据上进行了比较如下图

    73210

    ACM竞赛学习指南(算法工程师成长计划)

    算法工程师成长计划 近年来,算法行业异常火爆,算法工程师年薪一般20万~100 万。越来越多的人学习算法,甚至很多非专业的人也参加培训或者自学,想转到算法行业。...大一下学期: 掌握C++部分语法,引用类型、函数重载等,基本明白什么是类。 学会使用栈和队列等线性结构。 掌握BFS和DFS以及树前序、序、后序遍历。 学会分治策略。...计算几何:判断点是否在线段上、线段相交、圆与矩形关系、点是否在多边形内、点到线段最近点、多边形面积、求多边形重心、求凸包、点在任意多边形内外判定。...学习使用C/C++连接数据库、学习一种C++开发框架来编写一些窗体程序(MFC、Qt)。...计算几何:多边形间并蹱点对、凸多边形间对蹱点对、四边形剖分、三角剖分、凸多边形最小周长外接矩形、凸多边形最小面积外接矩形、凸多边形间最小距离、凸多边形直径、凸多边形宽度等各种旋转卡壳相关算法、最小覆盖圆

    3.9K10

    可视化场景内任意绘制多边形并测量面积

    一般测量功能主要表现在两方面,一是测量距离,二是测量面积。...面积测量是根据鼠标绘制范围,通过地理坐标系转换而计算出实际面积大小,距离测量是根据鼠标在地图上绘制点,实时计算出两点之间实际距离。如何在3D场景测量面积?...下面我就在ThingJS平台实现鼠标任意点绘制多边形面积,计算绘制总长度和占地面积,支持在数字孪生可视化场景内任意绘制多边形并测量面积。...= $('#pointMarker'); // 鼠标移动至节点提示 this.init(); this.appClick(); } 4、创建完一个测量多边形面积方法,停止画图时候就会触发选定部分面积大小了...this.polygonCard, position: [position[0], position[1], position[2]] }); } 是不是非常简单就可以实现在数字孪生可视化场景测量多边形面积

    67830

    Google Earth Engine(GEE)——全球12级流域矢量数据免费下载(含数据下载链接)

    在最高级别的子流域划分,HydroBASINS将一个流域划分为两个子流域,即在两个河流分支相遇地方,每个分支上游面积至少为100平方公里。...在最高级别的子流域细分,HydroBASINS包含了100万个独立子流域多边形,平均面积为130.6平方公里,代表了全球陆地面积1.35亿平方公里(不包括南极洲)。...HydroBASINS只包括有限(主要是几何)属性信息,子流域面积、与上游源头和海洋出口距离,以及Pfafstetter编码。...请注意,总体HydroATLAS数据库完全包含了HydroBASINS所有子流域多边形,这些多边形在HydroATLAS还被增强了大量水文环境特征。...HydroSHEDS 基于 2000 年美国宇航局航天飞机雷达地形任务 (SRTM) 获得高程数据。 该数据基于 15 角秒(赤道处约 500 m)分辨率栅格数据提供嵌套分层分水岭多边形

    26710

    GEE代码实例教程详解:湖泊面积分析

    定义研究区域 我们首先定义了一个多边形区域(Region of Interest, ROI),这是分析湖泊面积地理范围。...坐标点列表表示多边形顶点,我们使用ee.Geometry.Polygon来创建这个多边形。 2....定义时间范围 设置时间范围time_start和time_end,用于筛选Landsat 8图像集合图像。 4....计算像素面积 使用multiply函数将水体掩膜与每个像素面积相乘,得到每个水体像素面积(单位:平方米)。 9. 可视化像素面积 将计算得到像素面积添加到地图上,使用绿色可视化。 10....打印结果 使用print函数打印湖泊面积。 结论 本教程通过一个具体代码实例,详细解释了如何在GEE中进行湖泊面积分析。从定义研究区域到计算和可视化结果,我们逐步介绍了每个步骤及其代码实现。

    18010

    由判断三一点是否在三角形内部而引发思考.....

    就如同走路一般地划线,从数组第一个点连到第五个点,多边行就构造出来了。       在图形编程,坐标的利用是不可忽视。...一个三角形在一个坐标系(譬如由A、B、C三点组成),我们可以通过计算它有向面积来判断A、B、C三点在坐标系顺逆。当然,在此之前我们必须先订立一套计算面积规则。...对于凸多边形而言(以三角形ABC为例),假设存在一个点D,若这个点在三角形内部,则以该点为起点,和原多边形任意两个连续且尊照多边形组成方向点(DAB、DBC、DCA)组成三角形讲都是一个方向...,DAB和DBC都是顺时针方向。...这样就可以判断一个点是否在一个凹多边形内部了。       以上说仅仅是简单多边形而已,在复杂多变形之中(内洞、飞地等),还要通过多边形拓扑运算来得到结果。

    1.2K80

    Kaggle优胜者详解:如何用深度学习实现卫星图像分割与识别

    以色列团队deepsense.io在419支参赛队伍获得了第四名成绩。deepsense.io模型使用了改进版U-Net网络,这是一种常用于图像分割问题的人工神经网络。...各类分布是不均匀,统计得到,农作物所占面积最多,达到了总面积28%,树木占了10%,但是道路所占面积则小得多,只有总面积0.8%,车辆所占面积只有0.02%。...当得分为0,则说明完全不匹配,而得分为1时说明检测结果和实际情况完全吻合。最后评分结果是将每个类单独得分进行平均得到。第一名队伍模型评分为0.49,我们模型评分结果也达到了0.46。...虽然用Jaccard指数作为模型评估指标,但是在训练过程以最小化所有像素二进制交叉熵总和为训练目标。 我们对数据通过预先计算得到数据统计值,将图像归一化为具有零均值和单位方差数据。...后期处理 地面实际情况标签通过WKT格式文件进行加载,以由顶点定义多边形来表示对象。我们在提交过程需要简化所生成多边形,去除不必要噪声干扰。

    1.8K120

    Python求凸包及多边形面积教程

    Graham扫描法 用一个栈来解决凸包问题,点Q每个点都会进栈一次,不符合条件点会被弹出,算法终止时,栈点就是凸包顶点(逆时针顺序在边界上)。 算法步骤如下图: ? ? ? ? ? ?...计算多边形面积 (1)顺时针给定构成凸包n个点坐标,叉乘法求多边形面积: ?...个点经纬度坐标,先将经纬度坐标转化成凸多边形经纬度距离,利用海伦公式求多边形面积: from geopy.distance import vincenty import math def HeronGetAreaOfPolyGonbyVector...(c)上述程序需要额外加入,判断结束栈内点数小于3和筛选凸包前点数小于3,不能计算多边形面积情况,可以直接给这种情况赋值0返回。...以上这篇Python求凸包及多边形面积教程就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.1K20

    EAST算法超详细源码解析:数据预处理与标签生成

    01 DataSet 类 在pytorch 通常会封装一个类来处理数据,这个类继承自 torch.utils.data.DataSet,我们需要重载父类 _len_ 和 _getitem_ 方法...处理数据类 (i) 处理数据类 (ii) 处理数据类 (iii) 处理数据这个类整体部分如上,接下来就其中重要部分进行解读,数据增强随机缩放和旋转这里就不说了,一起先来看看将图像大小裁剪至...02 is_cross_text:判断裁剪有无“割裂”图像任意文本框 is_cross_text(i) 生成裁剪后图像多边形区域以及文本框多边形区域,计算两者重叠区域面积。...map 分别用这些多边形填充。...理想情况下,我们找到了真实角度 ,这时候旋转文本框,得到外接矩形就会和文本框重合(当然,文本框不是直角矩形而是其它多边形形状时,不会重合),如上图中间部分,这时候外接矩形面积最小,拟合误差最小。

    2K30

    n维空间多面体有向测度和重心

    缘起 在《三维凸包》我们学习了如何求三维空间中凸包,本文来论述二维、三维甚至高位几何体测度和重心计算. 所谓测度,对于二维,指的是面积,对于三维,指的是体积....三角形面积和重心 这个在之前学习早就知道了,三角形有向面积使用叉积可以方便计算出来. ? 则三角形有向面积是 ? 其中, 是 A 在平面的坐标, 下同....平面多边形面积和重心 计算平面多边形面积有如下十分优美的 O(n) 伪代码, 这里 n 是多边形顶点个数, 是多边形 n 个顶点....(此点不一定在多边形内部),然后将平面多边形进行三角剖分, 然后平面多边形面积就等于剖分出来三角形面积之和. ?...于是,我们可以得到如下有向体积和重心公式 假设三维多面体有 m 个面,每个面都是一个多边形多边形顶点个数是 , 第 , 个面的顶点集合为 ,显然,对于不同 i 之间, 点{

    3.4K30
    领券