我正在将2D CDT地形从不能拦截的约束更改为可以拦截的约束。
我改变了:
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Constrained_Delaunay_triangulation_2<K> CDT;
typedef CGAL::Exact_predicates_exact_constructions_kernel EK;
typedef CGAL::Constrained_Delaunay_triangulation_2<EK,TDS,Itag> CDT;
typedef CGAL::Constrained_triangulation_plus_2<CDT> CDTP;
:
typedef typedef CDT::<...>
typedef CDTP::<...>
当我使用类Point来获取点的坐标时,例如:
bool operator()(const Point & p1, const Point & p2) const
{
double x = p1.x(); //<--- Error on this line
...
}
编译器发出错误:
没有从CGAL::Lazy_exact_ntboost::multiprecision::mpq_rational到double的转换
我对这个问题做了研究,但没有成功地修复这个错误。谁能告诉我怎么修理它?
thanks in advance
Itag
是控制约束交叉时代码行为的参数(参见文档)。因此,如果您使用EPICK有一个没有交集的工作代码,将Itag
更改为Exact_predicates_tag
是唯一需要的更改。