11#ifndef INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_
12#define INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_
14#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
15#include <CGAL/Periodic_3_Delaunay_triangulation_3.h>
16#include <CGAL/Periodic_3_triangulation_filtered_traits_3.h>
17#include <CGAL/point_generators_2.h>
18#include <CGAL/Random.h>
19#include <CGAL/Timer.h>
20#include <CGAL/Triangulation_vertex_base_with_info_3.h>
21#include <fmt/ostream.h>
26namespace cdt::experimental::periodic_triangulations
28 using K = CGAL::Exact_predicates_inexact_constructions_kernel;
29 using GT = CGAL::Periodic_3_triangulation_filtered_traits_3<K>;
31 using VbDS = CGAL::Periodic_3_triangulation_ds_vertex_base_3<>;
32 using T3Vb = CGAL::Triangulation_vertex_base_3<GT, VbDS>;
34 using CbDS = CGAL::Periodic_3_triangulation_ds_cell_base_3<>;
35 using Cb = CGAL::Triangulation_cell_base_3<GT, CbDS>;
38 using VbInfo = CGAL::Triangulation_vertex_base_with_info_3<int, GT, T3Vb>;
39 using TDS = CGAL::Triangulation_data_structure_3<VbInfo, Cb>;
40 using PDT = CGAL::Periodic_3_Delaunay_triangulation_3<GT, TDS>;
41 using T3Point = PDT::Point;
44 using Kd = CGAL::Cartesian_d<double>;
45 using Point = Kd::Point_d;
49 void make_random_T3_triangulation(T* T3,
int simplices,
int timeslices)
51 fmt::print(
"make_random_T3_triangulation() called\n");
53 int simplices_per_timeslice = simplices / timeslices;
56 int points = simplices / 6;
57 int points_per_timeslice = simplices_per_timeslice / 6;
66 double size = sqrt(points_per_timeslice);
68 CGAL::Random_points_in_cube_d<Point> gen(dim, size);
71 for (
int timeslice_index = 0; timeslice_index < timeslices;
75 fmt::print(
"Timeslice {}\n", timeslice_index);
76 for (
int point_index = 0; point_index < points_per_timeslice;
81 for (
int point_index = 0; point_index < points_per_timeslice;
85 timeslice_index * points_per_timeslice + point_index;
86 fmt::print(
" {}\n", fmt::streamed(v[
static_cast<std::size_t
>(offset)]));