【发布时间】:2021-01-06 22:57:46
【问题描述】:
我正在构建一个可以拦截自身的带有约束的地形,因此我将 CDT 的第三个参数更改为 CGAL::Exact_intersections_tag。我认为在插入约束中出现错误的唯一原因是,在没有正确标记的情况下交叉约束但仍然在 CDT::insert_constrain 上发生错误。异常文本为空,所以我被卡住了,无法验证原因并修复代码。插入代码是:
ct.insert_constraint(P.vertices_begin(), P.vertices_end(), closed);
closed 是一个布尔值,当约束关闭(多边形)时为真。
是一个有 500.000 个点的大曲面。在我的代码中,错误发生在:
ct.insert_constraint(P.vertices_begin(), P.vertices_end(),closed);
CGAL 文件是 Polyline_constraint_hierarchy_2.h。
异常数据是:
expr -> false
file -> file = 0x00007ffbeb81d6b0 "C:\\dev\\CGAL-
5.0\\include\\CGAL\\Triangulation_2\\internal\\Polyline_constraint_hierarchy_2.h"
line -> 1016
msg -> ""
文件Polyline_constraint_hierarchy_2.h上的代码是:
template <class T, class Compare, class Data>
void
Polyline_constraint_hierarchy_2<T,Compare,Data>::
add_Steiner(T va, T vb, T vc){
Context_list* hcl=nullptr;
if(!get_contexts(va,vb,hcl)) CGAL_triangulation_assertion(false); <<--- here
Context_list* hcl2 = new Context_list;
Vertex_it pos;
...
确定问题出在get_contexts
谢谢。
【问题讨论】:
-
您能否提供一个我们可以编译和运行的最小示例来显示问题?
-
好的 Sloriot,我会做一个例子并发布它。我会花一两天时间来做,因为现在我没有时间。谢谢。
-
注意这里可以直接提交github.com/CGAL/cgal/issues
-
好的,我会的。谢谢。
标签: c++ eclipse-cdt cgal