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

double L(3), delta(0.25);

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

P phi(int i)
{
  if (i <= 5)
    return P(i, L + 3*pow(-1, i)/(2 + i));
  else if (6 < i)
    return P(i, L + pow(-1, i)/(1 + i));
  else
    return P(6, L - 0.5*delta);
}

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

  begin();

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

  line(P(0,L), P(xmax(),L));
  line(P(6,0), P(6,ymax()));

  for (int i=1; i<10; ++i)
    {
      dot(phi(i));
      if (i <= 5)
	marker(P(i, 0), HTICK);
    }

  dashed();
  dash_size(6);
  line(P(0, L-delta), P(xmax(), L-delta));
  line(P(0, L+delta), P(xmax(), L+delta));

  h_axis_labels(P(1,0), P(3,0), 2, P(0,-6), b);
  label(P(0,0), P(0, -6), "$O$", b);

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

  label(P(6,0), P(0, -6), "$n_{0}$", b);

  label(P(xmax(), L - delta), P(4,0), "$y = l - " + mydelta + "$", r);
  label(P(xmax(), L + delta), P(4,0), "$y = l + " + mydelta + "$", r);

  tikz_format();
  end();
}
