#include "RandomSpawner.h" #include #include #include namespace kurator { namespace sim { 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 = M_PI + 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 engine::Point position { distance * std::cos(angle), distance * std::sin(angle), }; return {position, facing}; } } // namespace sim } // namespace kurator