#include "polygon.h" #include #include #include Polygon::Polygon (double n_, double len_): n (n_), len (len_) { } double Polygon::bounding_box_area () const { double alpha = 2 * M_PI / n; double radius = len / (2 * std::sin (alpha / 2)); double alpha_i = 0.5 * (alpha - M_PI); double min_x = std::cos (alpha_i); double max_x = min_x; double min_y = std::sin (alpha_i); double max_y = min_y; for (unsigned int i = 1; i != n; ++i) { alpha_i += alpha; double x = std::cos (alpha_i); double y = std::sin (alpha_i); min_x = std::min (min_x, x); max_x = std::max (max_x, x); min_y = std::min (min_y, y); max_y = std::max (max_y, y); } return ((max_x - min_x) * radius) * ((max_y - min_y) * radius); } std::string Polygon::str () const { std::stringstream buf; buf << n << "-szog (oldalhossz: " << len << ")"; return buf.str (); }