13#ifndef dealii_cgal_point_conversion_h
14#define dealii_cgal_point_conversion_h
20#ifdef DEAL_II_WITH_CGAL
22# include <CGAL/version.h>
23# if CGAL_VERSION_MAJOR >= 6
24# include <CGAL/Installation/internal/disable_deprecation_warnings_and_errors.h>
26# include <CGAL/Cartesian.h>
27# include <CGAL/Exact_predicates_exact_constructions_kernel.h>
28# include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
29# include <CGAL/Simple_cartesian.h>
35#ifdef DEAL_II_WITH_CGAL
46 template <
typename CGALPo
intType,
int dim>
48 dealii_point_to_cgal_point(const ::Point<dim> &p);
58 template <
int dim,
typename CGALPo
intType>
60 cgal_point_to_dealii_point(
const CGALPointType &p);
66 template <
typename CGALPo
intType,
int dim>
68 dealii_point_to_cgal_point(const ::Point<dim> &p)
70 constexpr int cdim = CGALPointType::Ambient_dimension::value;
71 static_assert(dim <= cdim,
"Only dim <= cdim supported");
72 if constexpr (cdim == 1)
73 return CGALPointType(p[0]);
74 else if constexpr (cdim == 2)
75 return CGALPointType(p[0], dim > 1 ? p[1] : 0);
76 else if constexpr (cdim == 3)
77 return CGALPointType(p[0], dim > 1 ? p[1] : 0, dim > 2 ? p[2] : 0);
80 return CGALPointType();
85 template <
int dim,
typename CGALPo
intType>
87 cgal_point_to_dealii_point(
const CGALPointType &p)
89 constexpr int cdim = CGALPointType::Ambient_dimension::value;
90 if constexpr (dim == 1)
91 return ::Point<dim>(CGAL::to_double(p.x()));
92 else if constexpr (dim == 2)
93 return ::Point<dim>(CGAL::to_double(p.x()),
94 cdim > 1 ? CGAL::to_double(p.y()) : 0);
95 else if constexpr (dim == 3)
96 return ::Point<dim>(CGAL::to_double(p.x()),
97 cdim > 1 ? CGAL::to_double(p.y()) : 0,
98 cdim > 2 ? CGAL::to_double(p.z()) : 0);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NOT_IMPLEMENTED()