Straight Line;
BoundingRectangle(1,1);

ArrowRight;

// Draw the line of the arrow.
MoveTo(startx,starty);
LineTo(endx -3*grid/2,endy);

// Draw the arrow head.
pt0.x = endx;
pt0.y = endy;

pt1.x = endx -2*grid;
pt1.y = endy -grid/2;

pt2.x  = endx -3*grid/2;
pt2.y = endy;

pt3.x = endx -2*grid;
pt3.y = endy +grid/2;

pt4.x = endx;
pt4.y = endy;

Polygon(5);

ArrowEnd;

//**************************************

ArrowLeft;

// Draw the line of the arrow.
MoveTo(endx,endy);
LineTo(startx +3*grid/2,starty);

// Draw the arrow head.
pt0.x = startx;
pt0.y = starty;

pt1.x = startx +2*grid;
pt1.y = starty +grid/2;

pt2.x  = startx +3*grid/2;
pt2.y = starty;

pt3.x = startx +2*grid;
pt3.y = starty -grid/2;

pt4.x = startx;
pt4.y = starty;

Polygon(5);

ArrowEnd;

//**************************************
ArrowUp;

// Draw the line of the arrow.
MoveTo(endx,endy);
LineTo(startx,starty -3*grid/2);

// Draw the arrow head.
pt0.x = startx;
pt0.y = starty;

pt1.x = startx +grid/2;
pt1.y = starty -2*grid;

pt2.x  = startx;
pt2.y = starty -3*grid/2;

pt3.x = startx -grid/2;
pt3.y = starty -2*grid;

pt4.x = startx;
pt4.y = starty;

Polygon(5);

ArrowEnd;

//**************************************
ArrowDown;

// Draw the line of the arrow.
MoveTo(startx,starty);
LineTo(endx,endy +3*grid/2);

// Draw the arrow head.
pt0.x = endx;
pt0.y = endy;

pt1.x = endx -grid/2;
pt1.y = endy +2*grid;

pt2.x  = endx;
pt2.y = endy +3*grid/2;

pt3.x = endx +grid/2;
pt3.y = endy +2*grid;

pt4.x = endx;
pt4.y = endy;

Polygon(5);

ArrowEnd; 