绘制物理图表(粒子自旋)

绘制物理图表(粒子自旋)

我正在尝试绘制一个粒子并可视化粒子的旋转。到目前为止,我已经完成了以下操作:

\begin{tikzpicture}
    \def\r{1.5} % Radius des Kreises
    \filldraw[top color=red,bottom color=green,draw=black,thick] (0,0) circle (\r); % Kreis
    \draw[thick,-{Latex[length=2mm]}] (0,\r) -- (0,2*\r) node[above] {$\vec{\mu}$}; % Pfeil durch die Mitte
    \draw[thick] (0,-1.5*\r) -- (0,-\r);
    \draw[thick,->] (-1.5*\r,0) to[bend right=45] (1.5*\r,0) node[below right] {$\vec{\omega}$}; % gebogener Pfeil
\end{tikzpicture}

编译如下此图片:

质子的磁矩

但是,我对表示粒子旋转的箭头并不满意。我猜箭头的起点和终点需要改为 (\r,135°) 和 (\r,45°) 这样的坐标,才能看起来更像三维图形。但是,由于没有使用极坐标,计算笛卡尔坐标根本没有给我任何输出。

有没有简单的方法可以做到这一点?我这里是否遗漏了一个关键命令?

答案1

最好使用一些 3D 引擎,例如 TiZperspective库。

你可以做这样的事情:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{perspective}

\begin{document}
\begin{tikzpicture}[3d view={30}{20}]
\draw[thick] (0,0,-2) -- (0,0,-4);
\draw[
      top color=red,bottom color=green,
      %shading=ball,ball color=red % <-- alternative
     ] (0,0,0) circle (2cm);
\draw[thick,-latex] (0,0,2) -- (0,0,4) node[above] {$\vec\mu$};
\draw[-latex] (180:3) arc (180:420:3)  node[above] {$\vec\omega$};
% uncomment to show the 3d plane
%\draw (-3.1,1) -- (-3.1,-3.1) -- (3.1,-3.1) -- (3.1,3.1) -- (1,3.1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

更新 1:一个更好看的选择(IMHO):

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{perspective}

\begin{document}
\begin{tikzpicture}[3d view={30}{20}]
\draw[thick] (0,0,-2) -- (0,0,-4);
\begin{scope}[blend group=screen]
  \draw[top color=red,bottom color=green] (0,0,0) circle (2cm);
  \draw[shading=ball,ball color=red]      (0,0,0) circle (2cm);
\end{scope}
\draw[thick,-latex] (0,0,2) -- (0,0,4) node[above] {$\vec\mu$};
\draw[-latex] (180:3) arc (180:420:3)  node[above] {$\vec\omega$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

更新 2:另一个,分隔球体的上下部分。

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{perspective}

\begin{document}
\begin{tikzpicture}[isometric view,rotate around z=180]
\draw[thick] (0,0,-2) -- (0,0,-4);
\begin{scope}[blend group=screen]
  \draw[fill=red]   (-45:2) arc (-45:135:2) arc (0:180:2cm); 
  \draw[fill=green] (-45:2) arc (-45:135:2) arc (0:-180:2cm); 
  \draw[shading=ball,ball color=gray!30!black] (0,0,0) circle (2cm);
\end{scope}
\draw[thick,-latex] (0,0,2) node[right] {$N$} -- (0,0,4) node[above] {$\vec\mu$};
\draw[-latex] (-60:3) arc (-60:150:3)  node[above] {$\vec\omega$};
\node[right] at (0,0,-2.5) {$S$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

不使用任何 3d 工具,您可以用极坐标(θ:r)(注意极坐标的冒号)作为起始位置和绘制一个圆弧arc(θ₁:θ₂:r)。然后更改yscale为椭圆弧。

在此处输入图片描述

shorten <=另外,使用负值延长从北极出来的矢量。

\begin{tikzpicture}
    \def\r{1.5} % Radius des Kreises
    \filldraw[top color=red,bottom color=green,draw=black,thick] (0,0) circle (\r); % Kreis
    \draw[thick,-{Latex[length=2mm]}, shorten <=-2mm] (0,\r) -- (0,2*\r) node[above] {$\vec{\mu}$}; % Pfeil durch die Mitte
    \draw[thick] (0,-1.5*\r) -- (0,-\r);
    \draw[thick,->, yscale=.3] (135:1.5*\r) arc(135:405:1.5*\r) node[above right] {$\vec{\omega}$}; % gebogener Pfeil
\end{tikzpicture}

答案3

更新: 渐近线用一些调色板。你可以玩nolight,以及 中的数字,例如, Rainbow(5)

在此处输入图片描述

在此处输入图片描述

// http://asymptote.ualberta.ca/
import three;
import palette;
unitsize(1cm);
currentprojection=orthographic(3X+Z);
//currentlight=nolight;  // turn on or off

surface s=scale3(1.5)*unitsphere;
s.colors(palette(s.map(zpart),Rainbow()));
draw(s);
draw(Label("$\vec{\omega}$",align=N,EndPoint),
     arc(O,-2X-2Y,2Y-2X,CW),black+.8pt,Arrow3);
draw(Label("$\vec{\mu}$",align=N,EndPoint),
     -3Z--3Z,black+.8pt,Arrow3);

渐近线颜色均匀。

在此处输入图片描述

// http://asymptote.ualberta.ca/
import three;
unitsize(1cm);
currentprojection=orthographic(3,3,2);
real r=1.5;
draw(scale3(r)*unitsphere,green+opacity(.7));
draw(Label("$\vec{\omega}$",align=N,EndPoint),
     arc(O,2X-Y,2Y-X),black+.8pt,Arrow3);
draw(Label("$\vec{\mu}$",align=N,EndPoint),
     -3Z--3Z,black+.8pt,Arrow3);

答案4

这是另一种方法,我使用了shadings库,另一行代码很简单,与上面的答案非常相似:

\documentclass[tikz, border=20mm]{standalone}
\usepackage{amsmath,amssymb}
\usetikzlibrary{shadings}
\begin{document}
\begin{tikzpicture}[>=stealth]
\draw[thick] (0,-3)--(0,0);
\shade[top color=green, bottom color=red] (0,0)circle(1.5); 
\draw[thick] (0,0)circle(1.5); 
\draw[thick, ->] (0,1.45)--(0,3) node[left] {$\vec{\mu}$};
\draw[thick, ->] (180:1.75)arc[start angle=135, end angle=405, x radius=2.5cm, y radius =0.25cm] node[above right] {$\vec{\omega}$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容