基于Boost的计算两个凸多边形的交集区域
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(PCL_demo)
find_package(Eigen3 3.3.4 REQUIRED)
find_package(Boost REQUIRED)
message(STATUS "boost:" ${Boost_INCLUDE_DIRS})
include_directories(
${EIGEN3_INCLUDE_DIR}
${Boost_INCLUDE_DIRS}
)
add_executable(demo main.cpp)
===============================================
\#include
\#include
\#include
\#include
\#include
\#include
\#include
int main()
{
typedef boost::geometry::model::polygon > polygon;
polygon green, blue;
boost::geometry::read_wkt(
"POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
"(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", green);
boost::geometry::read_wkt(
"POLYGON((4.0 -0.5 , 3.5 1.0 , 2.0 1.5 , 3.5 2.0 , 4.0 3.5 , 4.5 2.0 , 6.0 1.5 , 4.5 1.0 , 4.0 -0.5))", blue);
std::deque output;
boost::geometry::intersection(green, blue, output);
int i = 0;
std::cout << "green && blue:" << std::endl;
BOOST_FOREACH(polygon const& p, output)
{
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
}
return 0;
}
![Screenshot at 2024-01-10 17-18-17.png][1]
[1]: /usr/uploads/2024/01/3565049934.png
评论已关闭