//Part 2. Chapter 13. Exercise 8 //------------------------------------------------------------------------------ struct Hexagon : Shape { Hexagon(Point Center, double radius) : rCircumCircle(radius) { add(Center); } void draw_lines() const; private: double rCircumCircle; }; //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void Hexagon::draw_lines() const { if (fill_color().visibility()) { fl_color(fill_color().as_int()); fl_begin_complex_polygon(); for (int i = 0; i < 6; i++) fl_vertex(point(0).x + rCircumCircle*cos(2*M_PI*i/6), point(0).y + rCircumCircle*sin(2*M_PI*i/6)); fl_end_complex_polygon(); fl_color(color().as_int()); // reset color } if (color().visibility()) { fl_color(color().as_int()); for (int i = 0; i < 6; i++) { int p; if (i < 5) p = i + 1; else p = 0; fl_line(point(0).x + rCircumCircle*cos(2*M_PI*i/6), point(0).y + rCircumCircle*sin(2*M_PI*i/6), point(0).x + rCircumCircle*cos(2*M_PI*p/6), point(0).y + rCircumCircle*sin(2*M_PI*p/6)); } } } //------------------------------------------------------------------------------