From 150d96e74e778048e8e87437d54109d621583db8 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 13 Sep 2020 11:03:06 +0300 Subject: [PATCH] Add point in box generation --- .../include/psemek/pcg/random/point_box.hpp | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 libs/pcg/include/psemek/pcg/random/point_box.hpp diff --git a/libs/pcg/include/psemek/pcg/random/point_box.hpp b/libs/pcg/include/psemek/pcg/random/point_box.hpp new file mode 100644 index 00000000..af90bd53 --- /dev/null +++ b/libs/pcg/include/psemek/pcg/random/point_box.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include + +#include + +namespace psemek::pcg +{ + + template + struct box_point_distribution + { + std::uniform_real_distribution d[N]; + + box_point_distribution(geom::box const & b) + { + for (std::size_t i = 0; i < N; ++i) + { + d[i] = std::uniform_real_distribution{b[i].min, b[i].max}; + } + } + + box_point_distribution() + { + for (std::size_t i = 0; i < N; ++i) + { + d[i] = std::uniform_real_distribution{T{0}, T{1}}; + } + } + + template + auto operator()(RNG && rng) + { + geom::point p; + for (std::size_t i = 0; i < N; ++i) + p[i] = d[i](rng); + return p; + } + }; + +}