【发布时间】:2013-12-20 00:25:08
【问题描述】:
我希望能够提取三角剖分边界上每条边的顶点。问题是,如果需要,我首先通过定义域中的约束和孔来定义约束三角剖分。然后我需要通过网格细化算法来细化网格。除了一个小故障外,这一切都很好而且花花公子。我必须告诉哪个边缘位于哪个边界上。让我举个例子:给定定义域的 4 条折线,并且是三角剖分中的约束(例如顶部、底部、左侧和右侧折线),我必须告诉边缘位于哪条折线上。我已将每条折线定义为 std::vector,可以轻松地探测线段上的点。像这样: CDT::点pt1; CDT::Point 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?
}
【问题讨论】: