# TikZ: Arrow pointing to circle from inside through two points

Originally posted here; this comment suggested that I ask this question on this site instead.

The code at the bottom produces the correct drawing, shown below. The issue is that I don't think I drew it in the best way possible; in particular, I really don't like having to construct (X) or (Y) (I would rather specify that the radius is 2 and that the ray should go in the direction of (p)).

Can someone show me a better way?

\begin{tikzpicture}
\node [fill=black, shape=circle, inner sep=1pt, label=below:$O$] (O) at (0,0) {};
\node [fill=black, shape=circle, inner sep=1pt, label=below:$p$] (p) at (0.6,1.2) {};
\node [fill=black, shape=circle, inner sep=1pt, label=below:$f(p)$] (fp) at
(-1.2,0.7) {};
\coordinate (X) at (2,0);
\coordinate (Y) at (2.4, 1.7);
\node (C) [name path=C, draw, circle through=(X)] at (O) {};
\path [name path=fp--Y] (fp)--(Y);
\path [name intersections={of=fp--Y and C, by=F}];
\node [fill=black, shape=circle, inner sep=1pt, label=right:$r(p)$] (rp) at (F) {};
\draw [->] (fp)--(rp);
\end{tikzpicture}