/* -*-ePiX-*- */
#include "epix.h"
using namespace ePiX;

double f(double t)
{
  double u(t*t);
  return 0.6 + u*(0.3 + 0.1*u);
}

int main()
{
  picture(P(0, 0), P(1, 1), "2 x 2in");

  begin();
  double t0(0.15),
    t1(t0 + 0.15),
    t2(t1 + 0.075),
    t3(t2 + 0.1),
    t4(t3 + 0.15),
    t5(t4 + 0.075),
    t6(t5 + 0.075),
    t7(t6 + 0.1);
  /*
    t2(0.35), t3(0.5), t4(0.7),
    t5(0.75), t6(0.8), t7(0.9);
  */
  std::vector<double> cuts;
  cuts.push_back(t0);
  cuts.push_back(t1);
  cuts.push_back(t2);
  cuts.push_back(t3);
  cuts.push_back(t4);
  cuts.push_back(t5);
  cuts.push_back(t6);
  cuts.push_back(t7);

  bold();
  fill(Black(0.2));
  for (unsigned int i=0; i<cuts.size() - 1; ++i)
    rect(P(cuts.at(i), 0), P(cuts.at(i+1), f(cuts.at(i))));
  nofill();

  bbold();
  path bd(P(t0, 0), P(t0, f(t0)));
  for (unsigned int i=0; i<cuts.size() - 1; ++i)
    {
      bd.pt(P(cuts.at(i), f(cuts.at(i+1))))
	.pt(P(cuts.at(i+1), f(cuts.at(i+1))));
    }
  bd.pt(P(t7, 0));
  line(P(xmin(), 0), P(xmax(), 0));
  line(P(0, ymin()), P(0, ymax()));
  bd.close().draw();

  bold();
  plot(f, t0, t7, 20);

  tikz_format();
  end();
}
