diff options
author | Hind <hind.montassif@gmail.com> | 2021-04-23 09:41:29 +0200 |
---|---|---|
committer | Hind <hind.montassif@gmail.com> | 2021-04-23 09:41:29 +0200 |
commit | 9df34f942df8417db11c324fb0c4e2c475a5211f (patch) | |
tree | b9d51f16e34fb3b7aa6c6a0e4d8758295ef69c22 /src | |
parent | bf4625f877aee83325812c6c479af4df36a2c7e9 (diff) |
Get pi constant from boost instead of cmath (to be replaced with the C++20 standard one eventually)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/include/gudhi/random_point_generators.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/common/include/gudhi/random_point_generators.h b/src/common/include/gudhi/random_point_generators.h index e02c1ed2..25a10232 100644 --- a/src/common/include/gudhi/random_point_generators.h +++ b/src/common/include/gudhi/random_point_generators.h @@ -18,7 +18,7 @@ #include <CGAL/version.h> // for CGAL_VERSION_NR #include <vector> // for vector<> -#include <cmath> // for M_PI +#include <boost/math/constants/constants.hpp> // for pi constant // Make compilation fail - required for external projects - https://github.com/GUDHI/gudhi-devel/issues/10 #if CGAL_VERSION_NR < 1041101000 @@ -27,6 +27,8 @@ namespace Gudhi { +constexpr double pi = boost::math::constants::pi<double>(); + /////////////////////////////////////////////////////////////////////////////// // Note: All these functions have been tested with the CGAL::Epick_d kernel /////////////////////////////////////////////////////////////////////////////// @@ -165,11 +167,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t nu if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 2 * M_PI * k1 / num_lines; - v = 2 * M_PI * k2 / num_lines; + u = 2 * pi * k1 / num_lines; + v = 2 * pi * k2 / num_lines; } else { - u = rng.get_double(0, 2 * M_PI); - v = rng.get_double(0, 2 * M_PI); + u = rng.get_double(0, 2 * pi); + v = rng.get_double(0, 2 * pi); } Point p = construct_point(k, (R + r * std::cos(u)) * std::cos(v), @@ -201,7 +203,7 @@ static void generate_uniform_points_on_torus_d(const Kernel &k, int dim, std::si (100. + radius_noise_percentage) / 100.); } std::vector<typename Kernel::FT> cp2 = current_point; - double alpha = 2 * M_PI * slice_idx / num_slices; + double alpha = 2 * pi * slice_idx / num_slices; cp2.push_back(radius_noise_ratio * std::cos(alpha)); cp2.push_back(radius_noise_ratio * std::sin(alpha)); generate_uniform_points_on_torus_d( @@ -235,7 +237,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num std::vector<typename Kernel::FT> pt; pt.reserve(dim * 2); for (int curdim = 0; curdim < dim; ++curdim) { - FT alpha = rng.get_double(0, 2 * M_PI); + FT alpha = rng.get_double(0, 2 * pi); pt.push_back(radius_noise_ratio * std::cos(alpha)); pt.push_back(radius_noise_ratio * std::sin(alpha)); } @@ -371,7 +373,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std: for (std::size_t i = 0; i < num_points;) { Point p_sphere = *generator++; // First 3 coords - FT alpha = rng.get_double(0, 2 * M_PI); + FT alpha = rng.get_double(0, 2 * pi); std::vector<FT> pt(5); pt[0] = k_coord(p_sphere, 0); pt[1] = k_coord(p_sphere, 1); @@ -404,11 +406,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::si if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 2 * M_PI * k1 / num_lines; - v = 2 * M_PI * k2 / num_lines; + u = 2 * pi * k1 / num_lines; + v = 2 * pi * k2 / num_lines; } else { - u = rng.get_double(0, 2 * M_PI); - v = rng.get_double(0, 2 * M_PI); + u = rng.get_double(0, 2 * pi); + v = rng.get_double(0, 2 * pi); } double tmp = cos(u / 2) * sin(v) - sin(u / 2) * sin(2. * v); Point p = construct_point(k, @@ -440,11 +442,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_4D(std::si if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 2 * M_PI * k1 / num_lines; - v = 2 * M_PI * k2 / num_lines; + u = 2 * pi * k1 / num_lines; + v = 2 * pi * k2 / num_lines; } else { - u = rng.get_double(0, 2 * M_PI); - v = rng.get_double(0, 2 * M_PI); + u = rng.get_double(0, 2 * pi); + v = rng.get_double(0, 2 * pi); } Point p = construct_point(k, (a + b * cos(v)) * cos(u) + (noise == 0. ? 0. : rng.get_double(0, noise)), @@ -479,11 +481,11 @@ generate_points_on_klein_bottle_variant_5D( if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 2 * M_PI * k1 / num_lines; - v = 2 * M_PI * k2 / num_lines; + u = 2 * pi * k1 / num_lines; + v = 2 * pi * k2 / num_lines; } else { - u = rng.get_double(0, 2 * M_PI); - v = rng.get_double(0, 2 * M_PI); + u = rng.get_double(0, 2 * pi); + v = rng.get_double(0, 2 * pi); } FT x1 = (a + b * cos(v)) * cos(u); FT x2 = (a + b * cos(v)) * sin(u); |