2

Random polar coordinates has an example of the general sort of syntax I'm aiming to follow. For some reason the result is not working as intended.

In the MWE, I've commented out the line where I would use \MathPunctTwo, since otherwise that gives an error. \MathPunctOne illustrates the sort of output (shown in the figure below) that I'm interested in. \MathPunctTwo should calculate the radius of another point, which would appear on the same ring as the point labelled 3309. But if I uncomment the usage of \MathPunctTwo, pdflatex complains about

"! Missing number, treated as zero."

I'm not familiar with the TikZ calc library, so maybe I'm just using that wrong.

\documentclass[10pt]{article}

\usepackage{tikz}
\usetikzlibrary{backgrounds,shapes,arrows,positioning,calc,snakes,fit}
\usepgflibrary{decorations.markings}

\newcommand{\MathPunctOne}[5]{%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:#4cm) {};
}

\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{{#4 / 7}*5.6}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}

\begin{document}

\begin{figure}[htpb]
  \centering
  \begin{tikzpicture}[>=stealth',join=bevel,font=\sffamily,auto,on grid, decoration={markings, mark=at position .5 with \arrow{>}},dot/.style={circle,inner sep=1pt,fill}]

    \MathPunctOne{3305}{3323}{2}{1.6}{72.6605504587156}
    \MathPunctOne{3306}{3309}{3}{3.2}{26.422018348623855}
    % \MathPunctTwo{3315}{3307}{3}{4}{35}

    \draw[black!50] (0,0) circle (5.6cm); % 1
    \draw[black!50] (0,0) circle (4.8cm); % 2
    \draw[black!50] (0,0) circle (4.0cm); % 3
    \draw[black!50] (0,0) circle (3.2cm); % 4
    \draw[black!50] (0,0) circle (2.4cm); % 5
    \draw[black!50] (0,0) circle (1.6cm); % 6
    \draw[black!50] (0,0) circle (0.8cm); % 7

\end{tikzpicture}
\caption{Layer structure}\label{figure:layer structure}
\end{figure}
\end{document}

layers

1

How to divide with tikz calc (to find center of mass) seems to suggest that it isn't possible to divide with TikZ calc. Indeed, switching to multiplication does work.

\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{#4 * 0.8}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}

... But comment from @percusse below suggests that division IS possible, and that parentheses need to be added (rather than braces as in my original MWE). Indeed, other examples, like this sunflower pattern illustrate the use of parentheses for controlling operator precedence (and feature division).

  • 2
    You need to help the parser via \pgfmathsetmacro\radius{(#4 / 7)*5.6}% Braces usually group objects together in TeX and that confuses TikZ whether it is a compound object or a genuine thing. Hence the error. It is definitely possible to do arithmetic via calc or pgfmath. – percusse Dec 2 '14 at 20:55
  • Thanks for the help! I've fleshed out the answer accordingly. – Joe Corneli Dec 3 '14 at 11:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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