9

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} 

enter image description here

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} 

enter image description here

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.

11
  • 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, 2019 at 4:26
  • 1
    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, 2019 at 4:33
  • 1
    What is the geometry here? It is just simply the beginning angle and the ending angle.
    – user156344
    Apr 21, 2019 at 4:40
  • 1
    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, 2019 at 4:46
  • 1
    @marmot Yes, but I have to "update" myself right now
    – user156344
    Apr 21, 2019 at 4:56

3 Answers 3

16

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

3
  • +1, very clear!
    – CarLaTeX
    Apr 21, 2019 at 5:19
  • Amazing. I'm getting No file tikz-arcs.nav. attempting to run the code. Some library I need to install?
    – PatrickT
    Jun 22, 2020 at 6:24
  • The shorter synatx is not "deprecated" to my knowledge.
    – Alan
    Apr 6, 2021 at 15:16
7

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.

2

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

1
  • 1
    This solution has made me fall in love with PSTricks. It is so cool Apr 22, 2019 at 4:11

Not the answer you're looking for? Browse other questions tagged .