CGAL 我怎么知道三角形是否在边界上

CGAL How can I tell if triangle is on the boundary

本文关键字:边界 是否 我怎么知道 三角形 CGAL      更新时间:2023-10-16

我希望能够提取三角测量边界上每条边的顶点。问题是,如有必要,我首先通过在域中定义约束和孔来定义约束三角测量。然后我需要通过网格细化算法细化网格。一切都很好,花花公子,除了一个小故障。我必须分辨出哪条边位于哪条边界上。让我举个例子:给定定义域的 4 条折线,并且是三角测量中的约束(比如顶部、底部、左侧和右侧的折线),我必须告诉边缘位于哪条折线上。我将每条折线定义为 std::vector,可以很容易地探测段上的点。喜欢这个:CDT::P oint pt1;CDT::P oint 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)) ...

如果可以具有下垂边缘,则必须首先标记域,如以下示例所示,并检查该边缘是否入射到具有不同nesting_level的两个面。