CDT++
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
22#include <cassert>
23#include <vector>
24
25using K = CGAL::Exact_predicates_inexact_constructions_kernel;
26using GT = CGAL::Periodic_3_triangulation_filtered_traits_3<K>;
27
28using VbDS = CGAL::Periodic_3_triangulation_ds_vertex_base_3<>;
29using T3Vb = CGAL::Triangulation_vertex_base_3<GT, VbDS>;
30
31using CbDS = CGAL::Periodic_3_triangulation_ds_cell_base_3<>;
32using Cb = CGAL::Triangulation_cell_base_3<GT, CbDS>;
33
35using VbInfo = CGAL::Triangulation_vertex_base_with_info_3<int, GT, T3Vb>;
36using TDS = CGAL::Triangulation_data_structure_3<VbInfo, Cb>;
37using PDT = CGAL::Periodic_3_Delaunay_triangulation_3<GT, TDS>;
38using T3Point = PDT::Point;
39
41using Kd = CGAL::Cartesian_d<double>;
42using Point = Kd::Point_d;
43
45template <typename T>
46void make_random_T3_triangulation(T* T3, int simplices, int timeslices) noexcept
47{
48 std::cout << "make_random_T3_triangulation() called" << std::endl;
49
50 int simplices_per_timeslice = simplices / timeslices;
53 int points = simplices / 6;
54 int points_per_timeslice = simplices_per_timeslice / 6;
57 int const dim = 2;
58
59 std::vector<Point> v;
60 v.reserve(points);
61
63 double size = sqrt(points_per_timeslice);
64
65 CGAL::Random_points_in_cube_d<Point> gen(dim, size);
66
68 for (size_t i = 0; i < timeslices; i++)
69 {
71 std::cout << "Timeslice " << i << std::endl;
72 for (size_t i = 0; i < points_per_timeslice; i++) { v.push_back(*gen++); }
73 for (size_t i = 0; i < points_per_timeslice; i++)
74 {
75 std::cout << " " << v[i] << std::endl;
76 }
77 }
78}
79#endif // INCLUDE_PERIODIC_3_TRIANGULATIONS_HPP_
CGAL::Triangulation_vertex_base_with_info_3< int, GT, T3Vb > VbInfo
Allows each vertex to contain an integer denoting its timeslice.
CGAL::Cartesian_d< double > Kd
Random point generators for d-dimensional points in a d-cube per timeslice.
void make_random_T3_triangulation(T *T3, int simplices, int timeslices) noexcept
Make 3D toroidal (periodic) triangulations.