How does TikZ render an arc? [duplicate]

This question already has an answer here:

With the sample MWE below, TikZ generates the following diagram:

1. Drawing an arc

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate[label=below:$a$] (a) at (0,0);

\draw (a) arc(0:180:2);
\end{tikzpicture}
\end{document} 2. Drawing a circle

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate[label=below:$a$] (a) at (0,0);
\coordinate[label=below:$b$] (b) at (5,5);

\draw (a) arc(0:180:2);
\draw (b) circle [radius=2cm];
\end{tikzpicture}
\end{document} With \draw <coordinate> circle command, TikZ draws a circle, with the <coordinate> at its center.

With \draw <coordinate> arc command, TikZ draws an arc, with the <coordinate> as one of its endpoints.

I wish to understand, why this difference of behavior and how is TikZ drawing the arc with \draw (a) arc(0:180:2);.

Why does TikZ does not use (a) as its center point while drawing an arc similar to drawing a circle.

How does TikZ actually draw the arc with point a.

What is the reference and center point, when TikZ draws an arc.

marked as duplicate by user156344, Mensch, siracusa, Raaja, TeXnicianMay 5 at 7:49

• May I draw your attention to this question? IMHO the question "Why does TikZ does not use (a) as its center point while drawing an arc similar to drawing a circle?" is not really answerable, and there are more than enough answers that show you how you can get whatever behavior you want. – user121799 Apr 21 at 4:26
• The mathematical geometry of an arc and a circle? Judging from the question you seem to understand it very well. (Internally TikZ approximates them with Bezier curves, if that's your question.) – user121799 Apr 21 at 4:33
• What is the geometry here? It is just simply the beginning angle and the ending angle. – user156344 Apr 21 at 4:40
• The logic is very simple: consider \draw (x,y) arc(alpha:beta:r); Now draw a circle of radius r such that (x,y) is at the position specified by the angle alpha, Now TikZ draws an arc from that point to the point with angle beta along that circle. – user121799 Apr 21 at 4:46
• @marmot Yes, but I have to "update" myself right now – user156344 Apr 21 at 4:56

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} • +1, very clear! – CarLaTeX Apr 21 at 5:19

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} • This solution has made me fall in love with PSTricks. It is so cool – subham soni Apr 22 at 4:11