c++ - 使用 boost::polygon::voronoi 对点集进行三角剖分会导致三角形重叠
问题描述
我正在使用boost::polygon::voronoi
下面的代码(在这个问题下找到)对一组 2d 点进行三角测量
boost::polygon::voronoi_diagram<vert_value_typed> vd{};
boost::polygon::construct_voronoi(vertices.begin(), vertices.end(), &vd);
for (const auto& vertex : vd.vertices()) {
boost::container::static_vector<uint32_t, 40> big_face{};
const auto* start_edge = vertex.incident_edge();
auto* edge = start_edge;
do {
const auto cell = edge->cell();
ASSERT(cell && cell->contains_point());
big_face.push_back(util::checked_cast<uint32_t>(cell->source_index()));
if (big_face.size() == 3) {
// process output triangles
faces.push_back({
big_face[0],
big_face[1],
big_face[2]
});
big_face.erase(big_face.begin() + 1);
}
edge = edge->rot_next();
} while (edge != start_edge);
}
但是,我的一些三角形重叠,如下图所示:
请注意,重叠的三角形与其他三角形相比总是具有反向剔除,即它们指向下方。
如何修改算法以使生成的网格不包含这些重叠图像?我对 voronoi 图不够流利,无法手动解决这个问题。
解决方案
推荐阅读
- c++ - 优化 Q3DBars 图
- java - 解释和编译语言
- htmlunit - Java - 使用 HtmlUnit 单击图像
- python - 使用日期引用数据帧索引时出现键错误
- autohotkey - AutoHotkey 脚本仅在此窗口打开时有效
- html - 为什么我的背景图像变大了?
- python - 对于某些测试用例,Django 不会重新加载夹具
- swift - 无法调用非函数类型“MPMusicPlayerController”的值
- android - InvalidConfigurationException:未使用 AmazonCognitoSync 服务为 SNS 设置身份池
- c - malloc() 和 realloc() 结构