1

I'm trying to draw three vectors that are tangent to the circle, as shown below. enter image description here

Is it possible to use \foreach to duplicate one vector around the circle? If so, can someone help me to draw this picture?

  • 3
    Questions about how to draw specific graphics that just post an image of the desired result are really not reasonable questions to ask on the site. Please post a minimal compilable document showing that you've tried to produce the image and then people will be happy to help you with any specific problems you may have. See minimal working example (MWE) for what needs to go into such a document. – Dai Bowen Oct 2 '16 at 14:39
  • Why doesn't you use e.g. CorelDRW? I just ask. – Ľubomír Masarovič Oct 2 '16 at 18:08
15

Here's an alternative way to draw your circle + vectors using Metapost and luamplib. Compile with lualatex (assuming you have the TeX Gyre maths fonts available).

enter image description here

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Termes Math}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);

    path C, vv, aa, oo;
    C = fullcircle scaled 4cm;

    linejoin := 0;
    linecap := 0;

    for t=0 upto 2:
      p := 8/3t+2;
      drawarrow subpath (p-4/3,p+4/3) of C withcolor .3[blue,white];

      vv := (origin -- unitvector(direction p of C) scaled 2cm)            shifted point p of C;
      aa := (origin -- unitvector(direction p of C) scaled 1cm rotated 90) shifted point p of C;
      drawarrow vv withpen pencircle scaled 2 withcolor .67 green;
      drawarrow aa withpen pencircle scaled 2 withcolor (red+1/2green);

      label("$\vec{v}$", unitvector(direction 3/4 of vv) rotated -90 scaled 7 shifted point 3/4 of vv); 
      label("$\vec{a}$", unitvector(direction 2/3 of aa) rotated +90 scaled 7 shifted point 2/3 of aa); 

      fill fullcircle scaled 5 shifted point p of C;
    endfor

    oo = subpath(3.4,4.2) of C scaled 1.12;
    drawarrow oo withpen pencircle scaled 4 withcolor .8 white;
    label.lft("$\omega$", point 2/3 of oo);

endfig;
\end{mplibcode}
\end{document}

Notes

  • There are 8 "points" on a fullcircle path, so point 2 of C is at 12 o'clock, etc.

  • direction x of C gives you the tangent vector at point x of C

  • Wrapping unitvector and scaled... around the pair returned by direction lets you control the size properly

  • Setting linejoin and linecap to 0 gives you nice sharp arrows despite the big fat pen used.

  • very nice answer (+1), however I'm afraid that it is to sophisticated for a LaTeX beginner (latter I anticipate on basis that OP didn't show any own effort to draw something similar what she/he like to obtain) ... :-( – Zarko Oct 2 '16 at 17:08
  • 2
    @Zarko it's never too early to learn Metapost! :-) – Thruston Oct 2 '16 at 17:24
6

Here is a solution using TikZ:

enter image description here

\documentclass{article}

\usepackage[latin1]{inputenc}              
\usepackage[T1]{fontenc}

\usepackage{tikz}

\usetikzlibrary{positioning,calc}
\usepackage{esvect}

\begin{document}


\begin{tikzpicture}

\def\rr{3cm}
\def\nn{3}
\draw[thick, blue] (0,0) circle (\rr);
\foreach \aa in {1,2,...,\nn}{
\begin{scope}[rotate={\aa*360/\nn+15}]
\draw [-latex, green, ultra thick] (0:\rr) coordinate(dd\aa)--++(0,1.5cm)coordinate(aa\aa)node[right]{$\vv{v}$};
\draw [-latex, orange, ultra thick] (0:\rr) --++(-1cm,0) node[right]{$\vv{a}$};
\draw [fill=black] (0:\rr) circle (0.1);
\end{scope}
\draw[ultra thick, gray,-latex] (-15:{\rr+0.5cm}) to [bend right=15] node[right]{$\omega$}(15:{\rr+0.5cm});
}

\def\rr{5cm}
\def\nn{5}
\draw[thick, blue] (0,0) circle (\rr);
\foreach \aa in {1,2,...,\nn}{
\begin{scope}[rotate={\aa*360/\nn+15}]
\draw [-latex, green, ultra thick] (0:\rr) --++(0,{5/3*1.5cm})node[right]{$\vv{v}$};
\draw [-latex, orange, ultra thick] (0:\rr) --++(-1cm,0) node[right]{$\vv{a}$};
\draw [fill=black] (0:\rr) circle (0.1);
\end{scope}
}

\draw (0,0) --(aa3)coordinate[pos=2](ff) -- (ff);
\draw (0,0) -- (dd3)coordinate[pos=2](ff) -- (ff);


\end{tikzpicture}

\end{document}
5

Not adding a huge amount to existing answers apart from the shaded grey arrow.

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[>=Triangle]
\shade [top color=white, bottom color=gray!50, middle color=white]
  (120:8/3) arc (120:190:8/3) node [black, near end, left] {$\omega$}
  -- (190:25/9) -- (200:15/6) -- (190:20/9) -- (190:7/3)
  arc (190:120:7/3) -- cycle;
\foreach \i in {90, 210, 330}{
  \draw [->, thick, blue!50!cyan] (\i-65:2) arc (\i-65:\i+60:2);
  \tikzset{shift={(\i:2)}, rotate=\i+180}
  \draw [->, very thick, orange] (0,0) -- (1,0)
    node [black, near end, anchor=\i+90] {$\vec a$};
  \draw [->, very thick, green!50!black] (0,0) -- (0,-2)
    node [black, near end, anchor=\i+180] {$\vec v$};
  \fill circle [radius=1/10];
}
\end{tikzpicture}
\end{document} 

enter image description here

4

Another solution with PSTricks. Compiling it with latex-dvips-ps2pdf is the fastest way.

\documentclass[pstricks,preview]{standalone}
\usepackage{pst-node}

\def\Orbit#1{%
\begin{pspicture}[arrows=->,arrowscale=2,dimen=m](-6,-6)(6,6)
    \psarc(0,0){4}{0}{120}\psarc(0,0){4}{120}{240}\psarc(0,0){4}{240}{0}\pscircle{4}
    \psarc[linecolor=gray](0,0){4.75}{50}{70}\rput(5.25;60){$\omega$}
    \pnodes(0,0){O}(4;#1){A}([nodesep=2]{O}A){R}([offset=-2]{O}A){T}
    \pscircle*[linecolor=green](A){6pt}
    \pcline[linecolor=blue](A)(R)\naput{$\vec{a}$}
    \pcline[linecolor=red](A)(T)\nbput{$\vec{v}$}
\end{pspicture}}

\begin{document}
\foreach \x in {0,30,...,330}{\Orbit{\x}}
\end{document}

enter image description here

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.