21

I have this code to draw a mass on a spring and now I want to have a curly brace below the spring to denote the distance: x_0. How do I do this?

\begin{tikzpicture}
\tikzstyle{ground}=[fill,pattern=north east lines,draw=none,minimum width=0.3,minimum height=0.6]

\node (wall1) [ground, minimum height=2cm] {};
\draw (wall1.north east) -- (wall1.south east);
\node [draw,minimum width=0.5cm,minimum height=0.5cm] (mass) at (2,0) {m};
\node (fix) at (0,0) {};
\draw [snake=coil,segment amplitude=5pt,segment length=5pt] (fix) -- (mass); 
\end{tikzpicture}
2

1 Answer 1

33

As suggested in Andrew's answer that Seamus linked to, you can use a brace decoration for this. If it's on the wrong side of your path, use the mirror option (or reverse the path order). To increase the spacing, you can use raise=<length>:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{patterns,snakes}

\begin{document}
\begin{tikzpicture}
\tikzstyle{ground}=[fill,pattern=north east lines,draw=none,minimum width=0.3,minimum height=0.6]

\node (wall1) [ground, minimum height=2cm] {};
\draw (wall1.north east) -- (wall1.south east);
\node [draw,minimum width=0.5cm,minimum height=0.5cm] (mass) at (2,0) {m};
\node (fix) at (0,0) {};
\draw [
    snake=coil,
    segment amplitude=5pt,
    segment length=5pt
] (wall1.east) -- (mass); 
\draw [
    thick,
    decoration={
        brace,
        mirror,
        raise=0.5cm
    },
    decorate
] (wall1.east) -- (mass) 
node [pos=0.5,anchor=north,yshift=-0.55cm] {coil}; 
\end{tikzpicture}
\end{document}
1
  • 8
    Note from the next year (2012-09-07): the snake library is now deprecated. For the code above, \usetikzlibrary{patterns,snakes} should be replaced by \usetikzlibrary{patterns,decorations.pathreplacing}.
    – Evpok
    Commented Sep 7, 2012 at 21:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .