From 18a763bcb19c5ece4b7b7d079dab07a1d915deb6 Mon Sep 17 00:00:00 2001 From: Aki Date: Sat, 3 Dec 2022 00:44:07 +0100 Subject: Moved battles module files to sim --- sim/src/RandomSpawner.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sim/src/RandomSpawner.cpp (limited to 'sim/src/RandomSpawner.cpp') diff --git a/sim/src/RandomSpawner.cpp b/sim/src/RandomSpawner.cpp new file mode 100644 index 0000000..b85d140 --- /dev/null +++ b/sim/src/RandomSpawner.cpp @@ -0,0 +1,42 @@ +#include "RandomSpawner.h" + +#include + +#include +#include + + +namespace kurator +{ +namespace battles +{ + + +RandomSpawner::RandomSpawner(const int total_teams, const double distance, const double variation) : + angle_step {2.0 * M_PI / total_teams}, + device {}, + distribution_d {distance - distance * variation, distance + distance * variation}, + distribution_a {-variation * M_PI, variation * M_PI} +{ +} + + +Transform +RandomSpawner::get(const int team) +{ + const double distance = distribution_d(device); + const double clean_angle = angle_step * team; + const double angle = clean_angle + distribution_a(device); + double facing = clean_angle + M_PI; + if (facing > 2 * M_PI) + facing -= 2 * M_PI; + const Point position { + distance * std::cos(angle), + distance * std::sin(angle), + }; + return {position, facing}; +} + + +} // namespace battles +} // namespace kurator -- cgit v1.1