c2p := proc (z) [evalc(Re(z)),evalc(Im(z))] end proc;
p2c := proc (z) z[1]+Complex(1)*z[2] end proc;

pfeil := proc (Arg, tau, delta, Farbe) 
  local t, u, v, w1, w2, g, eps, h, Dg; 
  eps := 10^(-Digits); 
  if type(Arg,procedure) then 
    g := Arg else g := unapply((1-t)*Arg[1]+t*Arg[2],t) end if; 
  u := evalf(g(tau)); h := evalf(sqrt(eps)*max(1,abs(tau))); 
  Dg:= evalf((g(tau+h)-g(tau))/h); 
  v := evalf(g(tau+delta/abs(Dg))); 
  w1:= evalf(u+Complex(1)*0.3*(v-u)); w2 := evalf(u+Complex(-1)*0.3*(v-u)); 
  plottools[polygon]([c2p(v),c2p(w1),c2p(w2)],color = Farbe,
                     style = patchnogrid) 
end proc;

