c++ - CGAL 如何判断三角形是否在边界上

标签 c++ graphics cgal

我希望能够提取三角剖分边界上每条边的顶点。问题是我首先通过在必要时在域中定义约束和孔来定义约束三角剖分。然后我需要通过网格细化算法细化网格。除了一个小故障外,这一切都很好用。我必须说出哪条边位于哪条边界上。让我举个例子:给定定义域的 4 条多段线,并且是三角剖分中的约束(例如顶部、底部、左侧和右侧多段线),我必须告诉哪条边位于哪条多段线上。我已将每条折线定义为 std::vector,可以很容易地探测线段上的点。像这样: CDT::点 pt1; CDT::点pt2;

for(const auto& seg : segments)
{
  if(seg.has_on(pt1))
  { num++; }
  if(seg.has_on(pt2))
  { num++; }
  if(num==2){/*success? -> return true*/}              
}

我知道 CGAL::bounded_side_2 函数,遗憾的是它在多边形上运行。我怎么解决这个问题?

for(CDT::Finite_edges_iterator it = cdt.finite_edges_begin();
            it != cdt.finite_edges_end(); ++it)
{
        CDT::Edge e=*it;
        // how can I tell if an edge is on boundary?
}

最佳答案

您可以使用 is_contrained来自约束三角剖分的方法。

if (cdt.is_constrained(e)) ...

如果你可以有空边,你必须首先像下面这样标记域example并检查边缘是否与具有不同 nesting_level 的两个面相关。

关于c++ - CGAL 如何判断三角形是否在边界上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694284/

相关文章:

c++ - 为什么 KD 树对于点集中的最近邻搜索如此缓慢?

c++ - 如何使用 boost::simple_segregated_storage?

c++ - 一个很好的、简单的、可移植的解决方案,用于在 C++ 中等待直到按下输入

c++ - 生成 3d 图形 c++

c++ - 将 QWidgets 放置在指定的坐标?

r - 如何将 C++ 库中的 exit() 替换为 Rcpp?

c++ - 字符串与数字的比较,它是如何工作的

c++ - 使 Eclipse CDT 忽略某些功能的错误

file - .obj 文件格式 - 在不同数据类型之间交替

c++ - 如何使用 cgal 循环器?