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

double f(double x)
{
  double u(0.5*(x - 2.5));
  return (1 - u)*(1 + u);
}

double xi(1.5), Y0(f(xi)), eps(0.2), delta(0.15), tmin(1), tmax(2);

#ifdef MODERNIZE
const std::string mydelta("\\epsilon");
const std::string myeps("\\delta");
#else
const std::string mydelta("\\delta");
const std::string myeps("\\epsilon");
#endif

int main()
{
  picture(P(-0.5, 0), P(2, 1), "4.5 x 1.8in");

  begin();
  bold();

  line(P(xmin(), 0), P(xmax(), 0));
  line(P(0,0), P(0, ymax()));

  plot(f, tmin, tmax, 20);

  line(P(xi - eps, 0), P(xi - eps, ymax()));
  line(P(xi + eps, 0), P(xi + eps, ymax()));

  line(P(xmin(), Y0), P(xmax(), Y0));

  dashed();
  dash_size(6);

  line(P(xmin(), Y0 - delta), P(xmax(), Y0 - delta));
  line(P(xmin(), Y0 + delta), P(xmax(), Y0 + delta));

  label(P(xmax(), 0), P(0,-4), "$X$", b);
  label(P(0, ymax()), P(-4,0), "$Y$", l);

  label(P(0, 0), P(0, -4), "$0$", b);
  label(P(xi, Y0), P(0,-4), "$P$", b);

  label(P(xi - eps, 0), P(0, -4), "$\\xi - " + myeps + "$", b);
  label(P(xi + eps, 0), P(0, -4), "$\\xi + " + myeps + "$", b);

  label(P(xmax(), Y0-delta), P(4, 0), "$y = \\phi(\\xi) - " + mydelta + "$", r);
  label(P(xmax(), Y0+delta), P(4, 0), "$y = \\phi(\\xi) + " + mydelta + "$", r);

  tikz_format();
  end();
}
