I'm trying to prove something and I need a clear drawing to be able to derive the angles and so on. So I thought why not draw it LaTeX !

Okay so my drawing is as suchenter image description here

Those are the cases of 8/6 and 6/4 I need to get up to higher orders with accurate drawings. The ones labeled with red are the ones to be always aligned in all the drawings.

Can someone help me create something generic or at least a sample for me to start from so that I could reach 12/8 , 16/14 and so on ? Some cases like 6/8 are to be considered as well.

up vote 7 down vote accepted

pics are very powerful tikz components, because they accept input arguments besides being treated the same way as nodes (small differences though).

\documentclass[tikz,border=2pt]{standalone}

\begin{document}

\tikzset{
    pics/numcirc/.style args={#1/#2}{
      code = {
        \draw circle (1);
        \foreach \i in {1,...,#1}
          \draw (90+\i*360/#1:1) -- (90+\i*360/#1:1.5);  
        \foreach \i in {1,...,#2}
          \draw (90+\i*360/#2:0) -- (90+\i*360/#2:0.5);
    }}}

\begin{tikzpicture}

\draw pic at(0,0) {numcirc=8/6};
\draw pic at(4,0) {numcirc=6/4};
\draw pic at(8,0) {numcirc=12/8};

\end{tikzpicture}

\end{document}

enter image description here

Here is a starting point. The idea is to use polar coordinates (I love polar coordinates) given by (angle:radius).

\documentclass{report}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[thick]
\foreach \a in {0,45,...,315}{
  \draw (\a:2)--(\a:3);
}
\foreach \a in {0,60,...,300}{
  \draw[red] (0,0)--(90+\a:1.8);
}

\draw (0,0) circle (2cm);
\end{tikzpicture}
\end{document}

Some improvements: thanks for @AboAmmar

enter image description here

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\def\numA{}
\def\numB{}
\newcommand{\target}[2]{%
  \renewcommand{\numA}{#1}
  \renewcommand{\numB}{#2}
  \begin{tikzpicture}[thick]
  \foreach \i in {1,...,\numA}{%
    \draw (\i*360/\numA:2) -- (\i*360/\numA:3);
  }
  \foreach \i in {1,...,\numB}{%
    \draw[red] (0,0) -- (90+\i*360/\numB:1.7);
  }

  \draw (0,0)node[below=3cm]{\Large$\numA/\numB$} circle (2cm);
  \end{tikzpicture}
}

\begin{document}
\target{8}{6}\target{6}{4}\target{12}{6}
\end{document}

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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