Rose rhodonea curve

An example for creating plots with foreach and pgfpointxy. It solves an equation for the parameters d from 1 to 6 an n from 1 to 9. There is still a bug in the formula which only strikes when \d > 5. Increasing the number \n from 9 to 10 runs MiKTeX out of memory.


rose-rhodonea-curve

Edit and compile if you like:

% Rose rhodonea curve
% Author: Manuel Kirsch
\documentclass [12pt]{scrartcl}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%


\usetikzlibrary{shapes}

\title{Rose-rhodonea-curve}
\author{Manuel Kirsch}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
    \draw (-1, 1) node{$_n\backslash^d$};
    \foreach \d in {1, 2, ..., 6} {
        \draw (2.5 * \d - 2, 1) node{\d};
    }
    \foreach \n in {1, 2, ..., 9} {
    \draw (-1, -2.5 * \n + 2) node{\n};
        \foreach \d in {1, 2, ..., 6} { 
            \fill[black!10!white] (2.5 * \d - 2, -2.5 * \n + 2) circle (1cm);
    \ifnum\n=\d
        \draw (2.5 * \d - 2, -2.5 * \n + 2) circle (0.5cm);
    \else
        \pgfplothandlerlineto
        \pgfplotfunction{\x}{0, \d, ..., 180\d}{
            \pgfpointxy     
            {2.5 * \d + cos(\x) * sin(\n / \d * \x) - 2}
            {-2.5 * \n + sin(\x) * sin(\n / \d * \x) + 2}
        }
    \pgfusepath{stroke}
    \fi
        }
    }
    \draw (7,-25.5) node [rounded rectangle, draw]
        {$r = \sin\left(\frac{\Theta \cdot n}{d}\right)$};
\end{tikzpicture}
\end{document}

Click to download: rose-rhodonea-curve.texrose-rhodonea-curve.pdf
Open in Overleaf: rose-rhodonea-curve.tex