procedure arrow( tailx, taily, tipx, tipy,
halfthickness,
halfheadthickness,
headlength ) {
newpath();
halfthickness = halfthickness/2;
halfheadthickness = halfheadthickness/2;
dx = tipx-tailx;
dy = tipy-taily;
arrowlength = sqrt( dy*dy + dx*dx );
angle = atan( dy, dx );
base = arrowlength - headlength;
savematrix = currentmatrix( matrix() );
translate( tailx, taily );
rotate( angle );
moveto( 0, -halfthickness );
lineto( base, -halfthickness );
lineto( base, -halfheadthickness );
lineto( arrowlength, 0 );
lineto( base, halfheadthickness );
lineto( base, halfthickness );
lineto( 0, halfthickness );
closepath();
setmatrix( savematrix );
}
arrow( 318, 340, 72, 340, 10, 30, 72 );
fill();
arrow( 382, 400, 542, 560, 72, 232, 116 );
setlinewidth( 3 );
stroke();
arrow( 400, 300, 400, 90, 90, 200, 100 * sqrt(3) );
setrgbcolor( 1, 0.3, 0.3 );
fill();
showpage(); |