答案1
这是使用以下方法绘制圆+矢量的另一种方法元帖子和luamplib
. 编译lualatex
(假设您有可用的 TeX Gyre 数学字体)。
\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}
笔记
一条路径上有 8 个“点”
fullcircle
,因此point 2 of C
12 点钟方向也是如此,等等。direction x of C
给出切向量point x of C
unitvector
将返回的对scaled...
包裹起来,可以direction
让你正确控制大小将 设置
linejoin
为linecap
0 可以得到漂亮而锐利的箭头,尽管使用的笔很大。
答案2
以下是使用 TikZ 的解决方案:
\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}
答案3
除了灰色阴影箭头外,没有在现有答案中添加大量内容。
\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}
答案4
另一个解决方案是使用 PSTricks。用它进行编译latex-dvips-ps2pdf
是最快的方法。
\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}