使用boost::geometry::union_ 合并边界(内、外):方案二

这篇具有很好参考价值的文章主要介绍了使用boost::geometry::union_ 合并边界(内、外):方案二。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用boost::geometry::union_ 合并边界(内、外):方案二


typedef boost::geometry::model::d2::point_xy<double> boost_point;
typedef boost::geometry::model::polygon<boost_point> boost_Polygon;

struct Point
{
    float x;
    float y;
    Point(float _x,float _y)
    {
      x = _x;
      y = _y;
    }
    Point(const boost_point & pt)
    {
      x = pt.x();
      y = pt.y();
    }
    operator boost_point()
    {
      return boost_point(x, y);
    }
};




bool TestClientTrafficEvent::TestBorderCombine()
{


//str_points_of_cur_frame_data = "POLYGON((1.500000 1.500000,1.500000 2.500000,2.500000 2.500000,2.500000 1.500000,1.500000 1.500000))".


  std::vector<Point> lhs;
  {
    Point lhs_p1(1.5, 1.5); 
    Point lhs_p2(1.5,2.5); //remain
    Point lhs_p3(2.5, 2.5); //remain
    Point lhs_p4(2.5, 1.5);
    Point lhs_p5(1.5, 1.5);
   
    lhs.push_back(lhs_p1);
    lhs.push_back(lhs_p2);
    lhs.push_back(lhs_p3);
    lhs.push_back(lhs_p4);
    lhs.push_back(lhs_p5);
  }

//str_points_of_compared_frame_data = "POLYGON((1.000000 1.000000,1.000000 2.000000,2.000000 2.000000,2.000000 1.000000,1.000000 1.000000))";
  std::vector<Point> rhs;
  {
    Point rhs_p1(1.0, 1.0); 
    Point rhs_p2(1.0, 2.0);
    Point rhs_p3(2.0, 2.0);
    Point rhs_p4(2.0, 1.0);
    Point rhs_p5(1.0, 1.0);    
  }
  
  boost_Polygon lhs_lt, rhs_lt;
  for (auto & pt : lhs)
  {
      boost::geometry::append(lhs_lt, (boost_point)pt);
  }
  
  for (auto & pt : rhs)
  {
      boost::geometry::append(rhs_lt, (boost_point)pt);
  }


 //进行并集计算
  std::vector<boost_Polygon> r;
  boost::geometry::union_(lhs_lt, rhs_lt, r);


  //通过验证:与传入的顺序无关,均返回相同的结果。
  std::vector<Point> vctr_combined ;
  if (!r.empty())//有结果返回
  {
    for (auto & pt : r[0].outer())
    {
      vctr_combined.push_back(pt);
    }
  }    


  std::cout << "vctr_combined.size()  = " << vctr_combined.size() << std::endl;

  for(auto iter : vctr_combined)
  {
    std::cout << "iter.x  = " << iter.x << ", iter.y  = " << iter.y << std::endl;
  }

  return true;
  
}


  • P1、P5 为新增自动生成的交叉点

  • P1为首位重合点

  • P1 ~ P8 ~ P8 为顺时针顺序

使用boost::geometry::union_ 合并边界(内、外):方案二,C++,boost,c++,算法,boost文章来源地址https://www.toymoban.com/news/detail-691748.html

到了这里,关于使用boost::geometry::union_ 合并边界(内、外):方案二的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL——DQL union合并、limit限制与DDL建表和删表

    一、Union 合并 union:是实现两个查询结果的合并。 例如:当我们查询员工名字为manager 和 salesman的员工名字和 工作? select e.ename,e.job from emp e where e.job=\\\'manager\\\' or e.job = \\\'salesman\\\'; select e.ename,e.job from emp e where e.job in(\\\'manager\\\',\\\'salesman\\\'); 以上两条cmd 命令查询结果是一样的: 但什么的

    2024年02月09日
    浏览(35)
  • JTS空间坐标Geometry使用

    Geomtery子类图 创建Geometry Geometry转换坐标系 Geometry方法 Geometry 与 WKT 转换 pom.xml

    2023年04月22日
    浏览(26)
  • 使用Dream3D和MATLAB从综合构建微结构到创建具有周期性边界条件的Abaqus输入文件的一站式解决方案

    声明 :本文中的所有内容仅供学术研究和讨论,不保证完全无误。对于使用本文内容可能产生的任何后果,作者不承担任何责任。希望大家在使用时,结合自己的实际情况进行酌情调整。 当我们面临材料力学问题,包括材料的疲劳、断裂和塑性等行为的仿真时,一个常见的

    2024年02月10日
    浏览(82)
  • 【沐风老师】3DMAX几何投影插件Geometry Projection使用详解

         【几何投影插件】 描述 3DMAX几何投影插件Geometry Projection,将一个或多个对象或它的顶点选择沿全局或局部 x、y 或 z 轴投影到另一个对象上。 适用版本 3dMax2013或更高版本 安装设置 插件的安装非常简单,解压后把插件脚本 “geometry_projection_setup-zh_CN.mzp”直接拖放到 3

    2024年01月20日
    浏览(46)
  • 在WPF应用中,结合阿里矢量图标库使用Geometry图标

    在我们的SqlSugar开发框架的WPF应端中,有时候我们需要在按钮或者其他界面元素上使用一些图标,框架中我们可以使用 lepoco/wpfui 项目的图标库,也可以使用Font-Awesome-WPF 图标库,另外我们如果喜欢阿里矢量图标库的,也可以通过使用Geometry图标来实现图标的展示,本篇随笔介

    2024年01月25日
    浏览(64)
  • 【MySQL】union (all) 后 order by 子查询排序不生效问题解决方案

    2308. 按性别排列表格 表:Genders Column Name Type user_id int gender varchar user_id 是该表的主键(具有唯一值的列)。 gender 的值是 ‘female’,‘male’,‘other’ 之一。 该表中的每一行都包含用户的 ID 及其性别。 表格中 ‘female’,‘male’,‘other’ 数量相等。 编写一个解决方案以重新

    2024年01月17日
    浏览(58)
  • 解密人工智能:KNN | K-均值 | 降维算法 | 梯度Boosting算法 | AdaBoosting算法

    机器学习算法是一种基于数据和经验的算法,通过对大量数据的学习和分析,自动发现数据中的模式、规律和关联,并利用这些模式和规律来进行预测、分类或优化等任务。机器学习算法的目标是从数据中提取有用的信息和知识,并将其应用于新的未知数据中。 机器学习算法

    2024年01月22日
    浏览(39)
  • 集成学习算法梯度提升(gradient boosting)的直观看法

    reference: Intuitive Ensemble Learning Guide with Gradient Boosting 梯度提升算法的核心思想:使用前一个模型的残差作为下一个模型的目标。 使用单个机器学习模型可能并不总是适合数据。优化其参数也可能无济于事。一种解决方案是将多个模型组合在一起以拟合数据。本教程以梯度提

    2023年04月09日
    浏览(56)
  • 记录一个IDEA中使用GIT的严重BUG,导致测试分支合并到主分支,以及代码恢复解决方案

    在做项目时遇到了一个问题,就是不知道什么操作,无缘无故把test分支代码合并到了master,导致花了好长时间去恢复master分支的代码,所以研究了一下,到底是什么原因导致的这个问题 PS: 后来分析出来根本原因,确定这确实是IDEA的一个BUG,在下面会有详细描述 当我们在test分支时,

    2023年04月14日
    浏览(74)
  • 平面点云的边界提取——Open3D实现方案

    平面点云的边界提取——Open3D实现方案 在计算机视觉领域中,平面点云(point cloud)是指由若干个点构成的三维坐标点集合。其广泛应用于机器人导航、三维重建、虚拟现实等领域。然而,对于要对点云中物体的边界进行提取的情况,传统方法常常表现得较为繁琐。因此,本

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包