How does TikZ render an arc?

Here is an attempt to use an animation to explain step by step what's going on. I use the non-deprecated syntax, as suggested by Joule V.

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}[t]
\frametitle{The arc construction}
\textbackslash\texttt{draw (P) arc[start angle=$\alpha$,end 
angle=$\beta$,radius=$r$];}

\centering
\begin{tikzpicture}
 \node[circle,fill,inner sep=1pt,label=right:{$P=(x,y)$}] (P){};
 \draw[dashed,visible on=<2-3>] (P) ++ (210:2) coordinate (O) circle[radius=2cm];
 \draw[visible on=<2>] (O) + (1,0) arc[start angle=00,end angle=30,radius=1cm] 
 node[midway,right] {$\alpha$};
 \draw[visible on=<2>] (P) -- (O) -- ++(2,0) node[midway,below]{$r$};
 \draw[visible on=<3-4>,thick] (P) arc[start angle=30,end angle=135,radius=2cm]
 coordinate (Q);
 \draw[visible on=<3>] (O) + (1,0) arc[start angle=00,end angle=135,radius=1cm] 
 node[midway,below] {$\beta$} (Q) -- (O) -- ++(2,0) ;
 \path (O) -- ++ (0,2.5); % only for the bounding box
\end{tikzpicture}
\begin{itemize}
 \item<+-> Consider a point $P=(x,y)$.
 \item<+-> Imagine now a circle of radius $r$ for which $P$ sits at the angle
 $\alpha$.
 \item<+-> The arc runs along this circle between the angles $\alpha$ and
 $\beta$.
\end{itemize}
\end{frame}
\end{document}

enter image description here


Short answer: arc has nothing to do with circle. circle is drawn with four curves, arc is drawn with one curve, that is all.

Let's start with tikz.code.tex. In lines 3673–3706, there is the definition of \tikz@do@arc, based on \pgfpatharc, which is defined in pgfcorepathconstruct.code.tex. Circles and ellipses are defined in the same way.

In pgfcorepathconstruct.code.tex, \pgfpatharc is defined as a curve with a starting point and an ending point, based on \pgf@nlt@curveto (line 401).

Meanwhile, you can see that any kind of curves, even circles, are defined based on \pgf@nlt@curveto. Circles and ellipses is defined in \pgfpathellipse as a set of four connected curves: line 926, line 947, line 968, and line 989 — each of these curves has its own \pgf@nlt@curveto.

That is why the arc does not take its coordinate as the center, but a starting point.


A PSTricks solution just for fun.

In PSTricks, drawing circular arcs as well as elliptical arcs is very intuitive as follows.

\documentclass[pstricks,border=12pt,12pt]{standalone}
\begin{document}
\begin{pspicture}[dimen=m](4,4)
    \pscircle[linestyle=dashed](2,2){2}
    \psellipse[linestyle=dashed](2,2)(2,1)
    \psarc[linecolor=red](2,2){2}{45}{90}
    \psellipticarc[linecolor=red,correctAngle=true](2,2)(2,1){45}{90}
\end{pspicture}
\end{document}

enter image description here

Tags:

Tikz Pgf