CDT++ 1.0.0
Causal Dynamical Triangulations in C++
Loading...
Searching...
No Matches
Periodic_3_triangulations.hpp
Go to the documentation of this file.
1
6
10
11#ifndef INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_
12#define INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_
13
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>
22
23#include <cassert>
24#include <vector>
25
26namespace cdt::experimental::periodic_triangulations
27{
28 using K = CGAL::Exact_predicates_inexact_constructions_kernel;
29 using GT = CGAL::Periodic_3_triangulation_filtered_traits_3<K>;
30
31 using VbDS = CGAL::Periodic_3_triangulation_ds_vertex_base_3<>;
32 using T3Vb = CGAL::Triangulation_vertex_base_3<GT, VbDS>;
33
34 using CbDS = CGAL::Periodic_3_triangulation_ds_cell_base_3<>;
35 using Cb = CGAL::Triangulation_cell_base_3<GT, CbDS>;
36
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;
42
44 using Kd = CGAL::Cartesian_d<double>;
45 using Point = Kd::Point_d;
46
48 template <typename T>
49 void make_random_T3_triangulation(T* T3, int simplices, int timeslices)
50 {
51 fmt::print("make_random_T3_triangulation() called\n");
52
53 int simplices_per_timeslice = simplices / timeslices;
56 int points = simplices / 6;
57 int points_per_timeslice = simplices_per_timeslice / 6;
60 int const dim = 2;
61
62 std::vector<Point> v;
63 v.reserve(points);
64
66 double size = sqrt(points_per_timeslice);
67
68 CGAL::Random_points_in_cube_d<Point> gen(dim, size);
69
71 for (int timeslice_index = 0; timeslice_index < timeslices;
72 ++timeslice_index)
73 {
75 fmt::print("Timeslice {}\n", timeslice_index);
76 for (int point_index = 0; point_index < points_per_timeslice;
77 ++point_index)
78 {
79 v.push_back(*gen++);
80 }
81 for (int point_index = 0; point_index < points_per_timeslice;
82 ++point_index)
83 {
84 auto const offset =
85 timeslice_index * points_per_timeslice + point_index;
86 fmt::print(" {}\n", fmt::streamed(v[static_cast<std::size_t>(offset)]));
87 }
88 }
89 }
90} // namespace cdt::experimental::periodic_triangulations
91#endif // INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_