8

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} 

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.

marked as duplicate by JouleV, Kurt, siracusa, Raaja, TeXnician May 5 at 7:49

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

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

  • +1, very clear! – CarLaTeX Apr 21 at 5:19
8

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.