The following is nearly what I am after, but the angles don't behave quite as I'd like:
r[a_, b_] := RegionNearest[Circle[{0, 0}, 1], a[[b]]];
Manipulate[Graphics[{Circle[{0, 0}, 1],
Line /@ {{Join[{{0, 0}}, a, {{0, 0}}]}},
Circle[{0, 0}, 1/4, {
If[a[[3, 2]] < 0, -#, #] &@VectorAngle[{1, 0}, a[[3]]],
If[a[[1, 2]] < 0, -#, #] &@VectorAngle[{1, 0}, a[[1]]]}],
Circle[a[[2]], 1/4, {
If[a[[3, 2]] - 1 < 0, -#, #] &@ VectorAngle[{1, 0}, {0, -1} + a[[3]]],
If[a[[1, 2]] - 1 < 0, -#, #] &@ VectorAngle[{1, 0}, {0, -1} + a[[1]]]}]
}, PlotRange -> 1.1],
{{a, CirclePoints[3]}, Locator,
TrackingFunction -> (Switch[CurrentValue["CurrentLocatorPaneThumb"],
1, a[[1]] = r[#, 1],
2, a[[2]] = r[#, 2],
3, a[[3]] = r[#, 3]
] &), Appearance -> None}]
Is there a more straightforward way to go about this, or is VectorAngle
the simplest?
Appearance -> None
to show locators). $\endgroup$