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

void dir(const P& tail, const P& head)
{
  P mid(0.5*(tail + head));
  arrow(tail, mid);
  line(mid, head);
}

void left_arrows(const P& tail, const P& head, double t = 0.3)
{
  P dir(head - tail), perp(J(dir));
  perp *= pt_to_screen(8)/norm(perp);
  arrow(tail + t*dir + perp, head - t*dir + perp);
  arrow(head - t*dir - perp, tail + t*dir - perp);
}

int main()
{
  picture(P(0, 0), P(3, 3), "2.4 x 2.4in");

  begin();
  arrow_inset(0.5);
  arrow_ratio(2);
  arrow_width(4);
  bold();
  P p11(0, 0), p12(3, 0), p21(0, 2), p22(3, 2), p31(0, 3.25), p32(3, 4.5);

  line(p11, p12, 30);
  line(p21, p22, 20);
  line(p31, p32, 40);
  line(p11, p31);
  line(p12, p32);

  dir(p32, p31);
  left_arrows(p11, p21);
  left_arrows(p21, p31);

  left_arrows(p12, p22);
  left_arrows(p22, p32);

  left_arrows(p11, p12);
  left_arrows(p21, p22);

  label(p21, P(-2,-4), "$P$", bl);
  label(p22, P( 2,-4), "$Q$", br);

  tikz_format();
  end();
}
