1

I am trying to create the attached image in Tikz. I don't want to include the bullseye, as I will use a fill in order to get the desired result. I am having trouble with the smaller polygons above the circle. I am also having trouble with the final rectangle at the bottom.

\documentclass{article}
\usepackage{tikz}
\usepackage[utf8]{inputenc}

\begin{document}
\begin{tikzpicture}
    % draw the sets
    \filldraw[fill=gray!20, draw=blue!60] (0,0) circle (2cm);
\node at (0,-3)[anchor=south]{\Large{\textbf{Speed}}};
\filldraw[fill=gray!20, draw=blue!60] (0,-6) circle (2cm);
\node at (0,-9)[anchor=south]{\Large{\textbf{Feed}}};
\draw[dotted,thick] (-1,-11)--(1,-11);
\node at (0,-12)[anchor=south]{\Large{\textbf{Angle}}};
\node at (1,-10)[anchor= west]{$\circ$};
\filldraw[fill=gray!20,shift = {(-2, -13)}] rectangle (5,1);

\end{tikzpicture}
\end{document}

Any help would be appreciated. I am a beginner with tikz, so my code may not be the most efficiententer image description here.

2

The best way to draw the polygons above the circles is with a \foreach command which rotate the axis in each iteration.

This is a quick example. The font is not the same but I think you can get the idea.

\documentclass[border=2mm]{standalone}
\usepackage{newpxtext} % Palatino font (text)
\usepackage{newpxmath} % Palatino font (math)
\usepackage{siunitx}   % for \ang command
\usepackage{tikz}      % beautiful drawings

% sans serif font
\renewcommand\familydefault{\sfdefault}

% styles
\tikzset%
{%
  my gray/.style={fill=gray!20, draw=blue!60},
  my text/.style={black!70,scale=4}
}


\begin{document}
\begin{tikzpicture}[line join=round,line cap=round]
% circles and rectangles
\foreach\i in {0,-8}
{%
  \filldraw[my gray] (0,\i) circle (2cm);
  \foreach\j in {-33.5,-14.5,...,213.5}
  {%
    \begin{scope}[shift={(0,\i)},rotate=\j]
      \draw[my gray] (2.4,-0.2) -- (2.9,-0.25) -- (2.9,0.25) -- (2.4,0.2) -- cycle;
    \end{scope}
  }
}
\draw[my gray] (-3,   -18)  rectangle (3,-16);
\draw[thick]   ( 1.25,-12.75) circle  (0.1cm);
\draw[dotted,thick] (-1,-13.75) -- (1,-13.75);
% labels
\node at (0,-3)  [my text]          {\bfseries SPEED};
\node at (0,-11) [my text]          {\bfseries FEED};
\node at (0,-13) [blue!50,scale=5]  {\bfseries 15};
\node at (0,-15) [my text]          {\bfseries ANGLE};
\draw[thick] (-2,-17) node [left]   {\ang{0}} -- (2,-17) node [right] {\ang{40}};
\foreach\i in {-1,0,1}
{%
  \pgfmathtruncatemacro\j{10*\i+20} % displayed angle
  \node at (\i,-17) [above] {\ang{\j}};
}
% logo
\node at (0  ,5)  [my text,scale=1.5]{\bfseries Slinger};
\node at (3.7,6)                     {\textregistered};
\fill[white] (-2.7,4.71) rectangle (-0.5,4.957);
\fill[white]  (0.8,4.71) rectangle  (2  ,4.957);
\fill[white]  (2.7,4.71) rectangle  (4  ,4.957);
\fill[yellow!70!green] (3.5,4.83) circle (0.15cm);
\end{tikzpicture}
\end{document}

Edit: Following a comment from the OP, I added a macro that draws the circles, the polygons around them and their labels. Also provides the possibility of fill one of these polygons with a different color.

\documentclass[border=2mm]{standalone}
\usepackage{newpxtext} % Palatino font
\usepackage{siunitx}   % for \ang command
\usepackage{tikz}      % beautiful drawings

% sans serif font
\renewcommand\familydefault{\sfdefault}

% styles
\tikzset%
{%
  my gray/.style={fill=gray!20, draw=blue!60},
  my  red/.style={fill=red!80,  draw=blue!60},
  my text/.style={black!70,scale=4}
}

\newcommand{\mycircle}[3]% position, label, red polygon position
{%
  \begin{scope}[shift={#1}]
    \draw[my gray] (0,0) circle (2cm);
    \foreach[count=\j]\i in {-33.5,-14.5,...,213.5}
    {%
      \begin{scope}[rotate=\i]
        \ifnum #3 = \j
          \draw[my red]  (2.4,-0.2) -- (2.9,-0.25) -- (2.9,0.25) -- (2.4,0.2) -- cycle;
        \else
          \draw[my gray] (2.4,-0.2) -- (2.9,-0.25) -- (2.9,0.25) -- (2.4,0.2) -- cycle;
        \fi
      \end{scope}
    }
    \node at (0,-3) [my text] {\bfseries #2};
  \end{scope}
}

\begin{document}
\begin{tikzpicture}[line join=round,line cap=round]
% circles and rectangle
\mycircle{(0, 0)}{SPEED}{3}
\mycircle{(0,-8)}{FEED} {4}
\draw[my gray] (-3,   -18)  rectangle (3,-16);
\draw[thick]   ( 1.25,-12.75) circle  (0.1cm);
\draw[dotted,thick] (-1,-13.75) -- (1,-13.75);
% labels
\node at (0,-13) [cyan!50,scale=5] {15};
\node at (0,-15) [my text]         {\bfseries ANGLE};
\draw[thick] (-2,-17) node [left,scale=1.5] {\ang{0}} -- (2,-17) node [right,scale=1.5] {\ang{40}};
\foreach\i in {-1,0,1}
{%
  \pgfmathtruncatemacro\j{10*\i+20} % displayed angle
  \node at (\i,-17) [above] {\ang{\j}};
}
% logo
\node at (0  ,5) [my text,scale=1.5] {\bfseries Slinger};
\node at (3.8,6)                     {\textregistered};
\def\minh{4.71}
\def\maxh{4.958}
\fill[white] (-2.7,\minh) rectangle (-0.5,\maxh);
\fill[white]  (0.8,\minh) rectangle  (2  ,\maxh);
\fill[white]  (2.7,\minh) rectangle  (4  ,\maxh);
\fill[yellow!70!green] (3.5,0.5*\minh+0.5*\maxh) circle (0.15cm);
\end{tikzpicture}
\end{document}

enter image description here

5
  • that is amazing! Jun 13 '21 at 22:43
  • If I wanted to fill one of the smaller polygon red, would that be possible? Jun 13 '21 at 22:46
  • Juan, what I am asking is that if I wanted the third rectangle on speed and the fourth on feed (filled in red) would this be possible? This is way beyond what I know. I ahve been researching on the site and \foreach might see like it would work. Jun 13 '21 at 23:41
  • 1
    @NIckBennett, with that in mind probably the best option is to define a macro which draws the circle, polygons and labels. And inside the macro you can chose the color with an if-then-else, \ifnum in tikz. See my edit. Jun 14 '21 at 6:12
  • I would never have been able to do this on my own. Thank you for the time and effort you put in. Jun 14 '21 at 9:07

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.