TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to draw two cylinders connected with a common belt around them. Therefore, I need two cycles and two tangents to these two cylinders. I know there is a general solution for my problem How can I draw a tangent ending smoothly in a circle?, but there are two specifics I cannot resolve:

  1. I want the belt to have another thickness (i.e. both tangents and outer lines of two cycles)

  2. I want to draw a vector of specific length along the belt between two cycles

Is there any way to achieve these two goals?

enter image description here

share|improve this question
I have no idea what your desired output is. Please make a mockup with e.g. Paint or something and add it to your question. Also, a minimal working example would be nice. Furthermore, "cylinders" suggests that the tag {3D} might be in order. – Tom Bombadil Oct 10 '12 at 18:50
Damn, I posted the wrong link. Is now clearer? – Pygmalion Oct 10 '12 at 20:15
Ah, so it's a top view then. So basically you want the picture from the link, and the path all around again with a bigger radius, I guess. – Tom Bombadil Oct 10 '12 at 20:20
I also added a picture. I want thicker line around and thin lines inside. And I want a vector on the belt. – Pygmalion Oct 10 '12 at 20:31
up vote 4 down vote accepted

Playing around a little with scopes, line thickness and putting nodes to the ends of tangents:

Code (inspired by percusse's answer)

\usetikzlibrary{calc, arrows}


    \node[draw,circle,xshift=2.2cm,minimum size=25mm,outer sep=0] (bigg) {};
    \node[draw,circle,minimum size=2mm,outer sep=0] (smalll) {};
        \draw[thick] (tangent cs:node=smalll,point={(bigg.south)},solution=2) node (a) {} -- (tangent cs:node=bigg,point={(smalll.south)}) node (b) {};
    \draw[thick] (tangent cs:node=smalll,point={(bigg.north)},solution=1) node (c) {} -- (tangent cs:node=bigg,point={(smalll.north)},solution=2) node (d) {};    

            \clip ($(d)+(0,0.25)$) rectangle ($(b)+(2.1,-0.25)$);
            \node[draw,circle,minimum size=25mm,outer sep=0,thick] at (bigg) {};

            \clip ($(c)+(0,0.1)$) rectangle ($(a)+(-0.2,-0.1)$);
            \node[draw,circle,minimum size=2mm,outer sep=0,thick] at (smalll) {};

        \draw[densely dashed, red, -latex] ($(c)!0.3!(d)$) -- ($(c)!0.7!(d)$);
        \draw[ultra thick, blue, -stealth] ($(b)!0.45!(a)$) -- ($(b)!0.75!(a)$);



enter image description here

share|improve this answer
Thanks so far. Showing how to get nodes (a) to (d) is obviously in the right direction. However, there are still two problems: (a) clipping can be seen on the smaller circle as two white spikes, and (b) is there any possibility to ensure that vector length is exactly specified length (say 1.5cm). I'll have a closer look into the solution tomorrow. – Pygmalion Oct 10 '12 at 21:10
Ok I've solved remaining (unresolved) problems myself using PGF commands. I'll accept the answer anyway. Regards. – Pygmalion Oct 11 '12 at 6:30

Your Answer


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.