Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have two images I need to recreate in TikZ. The first is that of Helmholtz coils and their spacing in the experiment: enter image description here

And the second being the wiring for the coils:

enter image description here

My (very) Minimal working example for the first picture is as follows:

\begin{figure}
\centering
\begin{tikzpicture}
\draw(1, 1) circle (170 pt);

\draw(7, 7) -- (9, 7);

\draw (8, 1) node {\Huge $d$};

\path[->,>=angle 90, thick](8, 2) edge (8,6.5);

\path[->,>=angle 90, thick](8, 0) edge (8, -4.5);

\draw(7, -5) -- (9, -5);

\draw[very thick] (-4.5, 7) rectangle (-2.5, -5);

\draw[very thick] (4.5, 7) rectangle (6.5, -5);

\draw[loosely dashed] (-3.5, 9) -- (-3.5, -7);

\draw[loosely dashed] (5.5, 9) -- (5.5, -7);

\draw (1, 1) node {\Huge $\frac{d}{2}$};

\path[->,>=angle 90, thick](0, 1) edge (-3.5, 1);

\path[->,>=angle 90, thick](2, 1) edge (5.5, 1);

\path[->,>=angle 90, very thick] (0, 3) edge (2, 3);

\end{tikzpicture}
\caption{Helmholtz Coil Geometry}
\label{Helmholtz}
\end{figure}

enter image description here

And for the Second Image, which is even more minimal, I have

    \begin{figure}
\centering
\begin{tikzpicture}
\draw[thick] (0, 5) rectangle (7, 0);

\draw[thick] (-6, 7) rectangle (-2, -0.5);

\draw[thick]  (1, 4.2) circle (5 pt);

\draw[thick]  (3.5, 3.9) circle (5 pt);

\draw[thick]  (6, 4.2) circle (5 pt);

\draw[thick]  (1, 0.8) circle (5 pt);

\draw[thick]  (3.5, 1.1) circle (5 pt);

\draw[thick]  (6, 0.8) circle (5 pt);

\end{tikzpicture}
\caption{Wiring Diagram for Helmholtz Coils}
\label{Circuit}
\end{figure}

enter image description here

share|improve this question
    
I have never understood why people who have a perfectly good graphic that they can put on this website, can't just copy and paste that into their own document and give an appropriate citation... That's got to be a better use of time! –  Andy Clifton May 18 '13 at 22:19
2  
@LostBrit I completely understand that, and I know it's a bit of a waste of time, but as a new TikZ user, this could be a learning experience for me. Also, there is a bit more freedom of line placement and coloring, which I could play with at my leisure! –  Reuben Stern May 18 '13 at 22:21
    
@LostBrit: You have half a valid point there. Often you have a graphic in medium resolution that look fine in the PDF, but not so much once you print it. This graphic is slightly blurry, this will probably look a lot worce when printing. On the other hand, just recreating is boring, I'll admit that. So one could try to improve it on the way ;-) –  Tom Bombadil May 18 '13 at 23:24

1 Answer 1

Here's a pseudo 3D variation. Note however that nodes with the 3d library behave strangely (only single nodes work, still need three coordinates...)

Code

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{3d,arrows}

% fix the implementation of "canvas is xy plane at z"
\makeatletter
\tikzoption{canvas is xy plane at z}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{0}{#1}}%
  \def\tikz@plane@x{\pgfpointxyz{1}{0}{#1}}%
  \def\tikz@plane@y{\pgfpointxyz{0}{1}{#1}}%
  \tikz@canvas@is@plane
}
\makeatother

% define styles for the three coordinate planes
\tikzset{xyp/.style={canvas is xy plane at z=#1}}
\tikzset{xzp/.style={canvas is xz plane at y=#1}}
\tikzset{yzp/.style={canvas is yz plane at x=#1}}

\begin{document}

\begin{tikzpicture}[x={(-30:1cm)},y={(190:1cm)},z={(90:1cm)}]% set unit vectors

    % "back" coil and optical axis
    \filldraw[yzp=-1.1,gray!80,draw=black,even odd rule](0,0) circle (1.8) (0,0) circle (2.2);
    \draw[densely dashdotted,yzp=-1](0,-2.9) -- (0,-2.2)  (0,-1.8) -- (0,1.8)  (0,2.2) -- (0,2.9);
    \filldraw[yzp=-0.9,gray,draw=black,even odd rule](0,0) circle (1.8) (0,0) circle (2.2);

    % experimental zone and text
    \filldraw[xzp=0,red,opacity=0.5,draw=red!50!black](0,0) circle (2);
    \draw[xzp=0,shorten <=0.5mm,shorten >=-1mm] (0,2) -- (0.4,3.5);
    \node[xzp=0,above,font=\footnotesize] at (0.4,0,3.5) {experimental zone};

    % magnetic field arrow and text; note that "latex" is a special arrow
    \draw[xzp=0,-latex] (-0.4,-1.4) -- (0.4,-1.4);
    \node[below,xzp=0] at (0,0,-1.4) {$\mathbf{B}$};
    \node[above,xzp=0,font=\footnotesize] at (0,0,-1.4) {magnetic field};

    % half diameter and text
    \draw[xzp=0,latex-latex] (-1,1) -- (1,1);
    \node[xzp=0,below] at (0.75,0,1) {$\frac{d}{2}$};

    % "front" coil and optical axis
    \filldraw[yzp=0.9,gray!80,draw=black,even odd rule](0,0) circle (1.8) (0,0) circle (2.2);
    \draw[densely dashdotted,yzp=1](0,-2.9) -- (0,-2.2)  (0,-1.8) -- (0,1.8)  (0,2.2) -- (0,2.9);
    \filldraw[yzp=1.1,gray,draw=black,even odd rule](0,0) circle (1.8) (0,0) circle (2.2);

    % diameter and text
    \draw[xzp=0] (1.1,2) -- (2,2) (1.1,-2) -- (2,-2);
    \draw[xzp=0,latex-latex] (1.8,2) -- (1.8,-2);
    \node[xzp=0,right] at (1.8,0,1.6) {$d$};
\end{tikzpicture}

\end{document}

Output

enter image description here


Edit 1: For the second picture you can use nodes (and coordinates for zero width nodes) which will make the connections easier. For the coils you can hace a look at the circuits library.

Code

\begin{tikzpicture}
    \draw[thick] (0, 5) rectangle (7, 0);

    \draw[thick] (-6, 7) rectangle (-2, -0.5);

    \draw[thick] (-5.5, 0) rectangle (-3, 1.5);
    \node[right] at (-3,0.75) {A};
    \foreach \x in {10,20,...,170} \draw (-4.25,0) ++ (\x:1) -- ++(\x:0.2);
    \draw[very thick,-latex] (-4.25,0) -- ++ (85:0.95);

    \node[circle,draw,inner sep=1.5mm] (tl) at (1, 4.2) {};
    \node[circle,draw,inner sep=1.5mm] (tm) at (3.5, 3.9) {};
    \node[circle,draw,inner sep=1.5mm] (tr) at (6, 4.2) {};
    \node[circle,draw,inner sep=1.5mm] (bl) at (1, 0.8) {};
    \node[circle,draw,inner sep=1.5mm] (bm) at (3.5, 1.1) {};
    \node[circle,draw,inner sep=1.5mm] (br) at (6, 0.8) {};

    \node[inner sep=0.5mm,circle,draw,label=180:+] (plus) at (-2.5,5) {};
    \draw (-2.5,5) circle (0.15);
    \draw[-latex] (plus) -| ++ (1,3) -| node[pos=0.25,circle,fill=white,draw] {A} (tm);

    \draw[latex-latex] (tl) -- (1,3.5) -- (6,1.5) -- (br);
    \draw[latex-latex] (tr) -- (6,3.5) -- (1,1.5) -- (bl);
\end{tikzpicture}

enter image description here

share|improve this answer
    
Thanks! Say I want it rotated a bit to the right, how would I do that? Change the unit vectors? –  Reuben Stern May 18 '13 at 23:45
    
Exactly! This will however not work for all angles, as the coils are not solid (just two rings). –  Tom Bombadil May 18 '13 at 23:46

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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