How do I add arrowheads to circular arcs?

 Show[ParametricPlot[#[[1]]*{Cos[θ], Sin[θ]}, {θ, #[[2]], #[[3]]},
    Axes -> False, PlotStyle -> #[[4]]] /.
  Line[x_] :> Sequence[Arrowheads[{-0.05, 0.05}], Arrow[x]] & /@ 
   {{1, 0 Degree, 90 Degree, Red}, {1.25, 0 Degree, 270 Degree, Blue},
    {1.5, 0 Degree, 180 Degree, Green}},
 PlotRange -> All]

enter image description here

Update: A function using a single ParametricPlot with multiple circles with arrows:

 ClearAll[arcsWArrows];
 arcsWArrows[args1 : {{_, {_, _}} ..}, dir_List: {Directive[GrayLevel[.3], 
 Arrowheads[{{-0.05, 0}, {0.05, 1}}]]}] :=
   ParametricPlot[ Evaluate[#[[1]]*{ Cos[Rescale[u, {0, 2 Pi}, Abs@#[[2]]]], 
     Sin[Rescale[u, {0, 2 Pi}, Abs@#[[2]]]]} & /@ args1],
    {u, 0, 2 Pi}, PlotStyle -> dir, Axes -> False,
     PlotRangePadding -> .2, ImageSize -> 200] /. 
  Line[x_, ___] :> Arrow[x]

Usage:

rdsAndAngls = {{1, {0, π/2}}, {1.25, {0, π}}, {1.5, {0, (3 π)/2}}, {2, {π/4, (4 π)/2}}};
directives = {Directive[Red, Thick,  Arrowheads[{{-0.05, 0}, {0.05, 1}}]],
    Directive[Blue, Dashed, Arrowheads[{{-0.05, 0}, {0.05, 1}}]],
    Directive[Green, Arrowheads[{{-0.05, 0}, {0.05, 1}}]],
    Directive[Orange, Thickness[.02],  Arrowheads[{{-0.07, 0}, {0.07, 1}}]]};

Row[{arcsWArrows[rdsAndAngls], 
       arcsWArrows[rdsAndAngls, {directives[[1]]}],
       arcsWArrows[rdsAndAngls, directives], 
       arcsWArrows[rdsAndAngls, directives[[-1 ;; 2 ;; -1]]]}]

enter image description here


You can approximate a Circle with a Line or Arrow, if reasonable resolution is given:

Circle[o_, r_, {a_, b_}] -> Arrow@Table[{Cos[k], Sin[k]}*r + o, {k, a, b, (b-a)/res}]

where res gives the resolution of the line. The replacement can be done at the first call of Graphics on the arguments or even after, on the InputForm version of the resulting figure.

To see it in action:

Manipulate[
 pts = N@Table[{Cos[k], Sin[k]}*r + o, {k, α Degree, β Degree, (β Degree - α Degree)/d}];
 Show[
  Graphics[{Lighter@Pink, AbsoluteThickness@10, Circle[o, r, {α Degree, β Degree}]}],
  Graphics[{Arrow[pts, 0]}],
  PlotRange -> {{-1.3, 1.3}, {-1.3, 1.3}}, AspectRatio -> 1, 
  Axes -> True, ImageSize -> 250
 ],
 {{d, 20, "res."}, 1, 100, Appearance -> "Labeled"},
 {{α, 0, "α"}, 0, 360, Appearance -> "Labeled"},
 {{β, 250, "β"}, 0, 360, Appearance -> "Labeled"},
 {{r, 1, "r"}, 0.01, 2, Appearance -> "Labeled"},
 {{o, {0, 0}, "origo"}, {-1, -1}, {1, 1}},
 ControlPlacement -> Left
]

Mathematica graphics


Perhaps somebody finds this useful

Graphics[{Arrowheads[{-0.05, 0.05}],GraphicsComplex[Table[{Re[Exp[I*g]],Im[Exp[I*g]]},
{g,Subdivide[Pi/4,2/3 Pi, 100]}], Arrow[Range[101]]]},
PlotRange -> {{-1, 1}, {-1, 1}}, Axes -> True]

enter image description here

Tags:

Graphics