33#ifdef OGDF_INCLUDE_CGAL
48template<
typename Kernel>
49typename graph::BloatedDualGraph<Kernel>::Edge
forward(
50 const typename graph::BloatedDualGraph<Kernel>::Node prev,
51 const typename graph::BloatedDualGraph<Kernel>::Node
cur,
52 const typename graph::BloatedDualGraph<Kernel>&
bd) {
55 auto is_good = [&](
const unsigned int e) {
57 return bd.is_face_edge(e) &&
bd.edges[e] != prev &&
bd.edges[e] !=
cur;
60 using Edge =
typename graph::BloatedDualGraph<Kernel>::Edge;
74template<
typename Kernel>
75typename graph::BloatedDualGraph<Kernel>::Edge
find_start(
76 const typename graph::BloatedDualGraph<Kernel>::Node
cur,
77 const graph::BloatedDualGraph<Kernel>&
bd) {
78 using Edge =
typename graph::BloatedDualGraph<Kernel>::Edge;
83 if (
bd.is_face_edge(
e_1) ||
bd.degree(
cur) == 1) {
85 }
else if (
bd.is_face_edge(
e_2)) {
100template<
typename Kernel>
101std::vector<unsigned int>
extract_cell(
const graph::BloatedDualGraph<Kernel>&
bd,
102 const typename graph::BloatedDualGraph<Kernel>::Node v) {
103 using Graph = graph::BloatedDualGraph<Kernel>;
104 using Node =
typename Graph::Node;
111 if (
bd.degree(v) > 1) {
130template<
typename Kernel>
132 const std::vector<unsigned int>&
seq) {
136 for (
unsigned int i = 0; i <
seq.size(); ++i) {
141 unsigned int seg_b = -1;
142 if (i + 1 <
seq.size()) {
148 for (
unsigned int l = 0;
l <= 1; ++
l) {
149 for (
unsigned int j = 0;
j <= 1; ++
j) {
163 if (
poly.is_empty() || *(--
poly.vertices_end()) != p) {
168 if (*
poly.vertices_begin() == *(--
poly.vertices_end())) {
176template<
typename Kernel>
180 unsigned int opt = -1;
186 for (
unsigned i = 0; i <
segments.size(); ++i) {
187 if (CGAL::do_intersect(
segments[i],
r)) {
192 auto o = geometry::intersect(
segments[i],
r);
205 for (
unsigned int i = 0; i <
bd.segment_to_intersections[
opt].size(); ++i) {
206 auto is =
bd.get_intersection_point(
bd.segment_to_intersections[
opt][i]);
207 if (CGAL::squared_distance(
is,
is_with_r) < distance) {
213 typename graph::BloatedDualGraph<Kernel>::Node v;
221 bd.get_intersection_point(
bd.segment_to_intersections[
opt][
opt_is]))) {
Basic declarations, included by all source files.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
int randomNumber(int low, int high)
Returns random integer between low and high (including).
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.