选自个人博客片段
https://www.gislxz.com/index.php/2024/08/25/qtopengl%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%ef%bc%882%ef%bc%89/

poly2tri,三角形剖分库,能把多边形进行三角形剖分
https://github.com/jhasse/poly2tri
是我在用opengl做gis数据渲染时需要对多边形进行剖分使用到的
编译时遇到一些问题,完全没找到中文资料,踩了不少坑,记录一下方便后人
首先需要ninja编译
直接用cmake编译会调用出错
我用的msvc2022作为编译器,使用x64 Native Tools Command Prompt for VS 2022,打开到库的根目录(注意不能直接切换到其他盘,比如我的文件在d盘,就要先切换到d盘再cd到目录)
执行以下命令(静态编译调用时会出错,一定得动态编译,不知道为什么,踩了大坑了)
mkdir build
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON ..
cmake --build 另外注意c++版本需要一致,你工程用什么版本就改cmakelists里的版本
build完之后build文件夹里就有dll、lib库文件,头文件在上一层D:\coding\libs\poly2tri-master\poly2tri里
在qt cmake文件里引入(测试用,给的绝对地址,别学)
# 包含头文件目录
target_include_directories(YuiGIS PUBLIC "D:\\coding\\libs\\poly2tri-master\\poly2tri")
# 链接第三方库
target_link_libraries(YuiGIS PUBLIC "D:\\coding\\libs\\poly2tri-master\\build\\poly2tri.lib") 测试代码
// Define points for a polygon
std::vector<p2t::Point*> polygon = {
new p2t::Point(0, 0),
new p2t::Point(10, 0),
new p2t::Point(10, 10),
new p2t::Point(0, 10)
};
// Perform triangulation
p2t::CDT cdt(polygon);
cdt.Triangulate();
//Get and process triangles
std::vector<p2t::Triangle*> triangles = cdt.GetTriangles();
for (auto* triangle : triangles) {
qDebug()<<triangle->GetPoint(0)->x<<" "<<triangle->GetPoint(0)->y;
}