I am interested in sketching a very common graphical scenario used in acoustic and audio research in Tikz. Essentially, it consists of a sketched head in the center and one or more loudspeakers around the head at different angles.
Something like this (I'm just talking about the idea, not the specific details):
I managed to get something done, but I am not very pleased with the result for two reasons:
-
I cannot make the option
minimum height
for the rectangle on top of the trapezium and, therefore, had to usescale
to make it thinner -
I don't like the fact that I have to manually adjust the x and y shifts of the rectangle after rotation.
Is there an easy way to parameterize the rotation of the whole loudspeaker symbol?
Thanks in advance! Here's the MWE (for some reason I can't externalize the image in PNG :/)
\documentclass{article}
\usepackage[mode=buildnew]{standalone}% requires -shell-escape
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usepackage{tikz} %inline graphics
\usetikzlibrary{plotmarks,dsp,chains,calc,shapes.geometric}
\usetikzlibrary{hobby,backgrounds,trees,snakes,shapes.callouts,positioning,pgfplots.groupplots}
\begin{document}
%
\begin{tikzpicture}[anchor=center,remember picture,overlay]
%\*
% Head
\node[thick,circle,minimum size=1.25cm,draw] at (0,0)
(head) {};
\draw [thick,] ([xshift=-3pt,yshift=-0.9pt]head.north) -- ([yshift=5pt]head.north) -- ([xshift=3pt,yshift=-0.9pt]head.north);
% Circle
\node[thick,dashed,circle,minimum size=3.0cm,draw] at (0,0)
(ah) {};
% LS at 0deg
\node[draw,thick,fill=gray,trapezium,minimum width=10pt,shape border rotate=0,shape border uses incircle] at ($(ah)+(90:1.5cm)$) (ls1) {};
\node[scale=0.75,draw,thick,fill=gray,minimum width=14pt] at ($(ls1.north)+(0,1.5pt)$) (ls12) {};
% LS at 40deg
\node[draw,thick,fill=gray,trapezium,shape border rotate=-40,shape border uses incircle] at ($(ah)+(50:1.5cm)$) (ls2) {};
\node[scale=0.75,draw,thick,fill=gray,minimum width=14pt,rotate=-40] at ($(ls2.north)+(5pt,-0.75pt)$) (ls22) {};
%*/
\end{tikzpicture}%
%
Best Answer
I'd use
pic
s for the speaker and the human head:The code: