7

I am drawing a dirac cone in tikz and I want to be able to indicate the spin with arrows, like in the following picture, where I just manually added the arrows in Adobe Reader:

enter image description here

How would I add these?

Here's my code for the dirac cone:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\def\h{4.6}
\def\a{2}
\def\b{0.5}
\definecolor{side}{RGB}{65,134,198}
\definecolor{middle}{RGB}{126,169,208}
\definecolor{top}{RGB}{35,104,168}
\definecolor{darkerred}{RGB}{223,51,59}
\definecolor{lighterred}{RGB}{236,123,127}

\def\shadebody{\fill[
    left color=top,
    right color=top,
    middle color=side,
    shading=axis,
    opacity=1
    ] }
\def\shadetop{\fill[
    left color=darkerred,
    right color=darkerred,
    middle color=lighterred,
    shading=axis,
    opacity=1
    ] }


\shadebody
  (\a,0) -- (0,\h) -- (-\a,0) arc (180:360:\a cm and \b cm);
\draw[line width = 0.5pt] 
  (-\a,0) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

  %upper part
\shadetop
(0,2*\h) circle (\a cm and \b cm);

\shadebody
(\a,2*\h) -- (0,\h) -- (-\a,2*\h) arc (180:360:\a cm and \b cm);

% draw circumfering line
\draw[line width = 0.5pt] (-\a,2*\h) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

%\draw[line width = 0.5pt] (\a,2*\h) arc (0:180:\a cm and \b cm);

% circle on top  
\draw[line width = 1.5pt, color=red] (0, 2*\h) circle (\a cm and \b cm);

% Dirac point  
\fill[black] (0,\h) circle (5pt);

\end{tikzpicture}

\end{document}

1 Answer 1

10

Will this do?

enter image description here

This is generated by

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h-\bb) arc[start angle=-90,end angle= 50, x radius =\aa cm , y radius =\bb cm];

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h+\bb) arc[start angle=-270,end angle= -120, x radius =\aa cm , y radius =\bb cm];

Full code:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\def\h{4.6}
\def\a{2}
\def\b{0.5}
\def\aa{2.3}            %%<<<--- added
\def\bb{0.75}           %%<<<--- added
\definecolor{side}{RGB}{65,134,198}
\definecolor{middle}{RGB}{126,169,208}
\definecolor{top}{RGB}{35,104,168}
\definecolor{darkerred}{RGB}{223,51,59}
\definecolor{lighterred}{RGB}{236,123,127}

\def\shadebody{\fill[
    left color=top,
    right color=top,
    middle color=side,
    shading=axis,
    opacity=1
    ] }
\def\shadetop{\fill[
    left color=darkerred,
    right color=darkerred,
    middle color=lighterred,
    shading=axis,
    opacity=1
    ] }


\shadebody
  (\a,0) -- (0,\h) -- (-\a,0) arc (180:360:\a cm and \b cm);
\draw[line width = 0.5pt]
  (-\a,0) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

  %upper part
\shadetop
(0,2*\h) circle (\a cm and \b cm);

\shadebody
(\a,2*\h) -- (0,\h) -- (-\a,2*\h) arc (180:360:\a cm and \b cm);

% draw circumfering line
\draw[line width = 0.5pt] (-\a,2*\h) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

%\draw[line width = 0.5pt] (\a,2*\h) arc (0:180:\a cm and \b cm);

% circle on top
\draw[line width = 1.5pt, color=red] (0, 2*\h) circle (\a cm and \b cm);

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h-\bb) arc[start angle=-90,end angle= 50, x radius =\aa cm , y radius =\bb cm];

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h+\bb) arc[start angle=-270,end angle= -120, x radius =\aa cm , y radius =\bb cm];

% Dirac point
\fill[black] (0,\h) circle (5pt);

\end{tikzpicture}

\end{document}

With four arrows and bending library loaded for better arrow heads:

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{bending}

\begin{document}
\begin{tikzpicture}
\def\h{4.6}
\def\a{2}
\def\b{0.5}
\def\aa{2.3}
\def\bb{0.75}
\definecolor{side}{RGB}{65,134,198}
\definecolor{middle}{RGB}{126,169,208}
\definecolor{top}{RGB}{35,104,168}
\definecolor{darkerred}{RGB}{223,51,59}
\definecolor{lighterred}{RGB}{236,123,127}

\def\shadebody{\fill[
    left color=top,
    right color=top,
    middle color=side,
    shading=axis,
    opacity=1
    ] }
\def\shadetop{\fill[
    left color=darkerred,
    right color=darkerred,
    middle color=lighterred,
    shading=axis,
    opacity=1
    ] }


\shadebody
  (\a,0) -- (0,\h) -- (-\a,0) arc (180:360:\a cm and \b cm);
\draw[line width = 0.5pt]
  (-\a,0) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

  %upper part
\shadetop
(0,2*\h) circle (\a cm and \b cm);

\shadebody
(\a,2*\h) -- (0,\h) -- (-\a,2*\h) arc (180:360:\a cm and \b cm);

% draw circumfering line
\draw[line width = 0.5pt] (-\a,2*\h) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

%\draw[line width = 0.5pt] (\a,2*\h) arc (0:180:\a cm and \b cm);

% circle on top
\draw[line width = 1.5pt, color=red] (0, 2*\h) circle (\a cm and \b cm);

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h-\bb) arc[start angle=-90,end angle= -30, x radius =\aa cm , y radius =\bb cm];

\draw[line width = 1.5pt, color=red,-latex] (0, 2*\h+\bb) arc[start angle=-270,end angle= -210, x radius =\aa cm , y radius =\bb cm];

\draw[line width = 1.5pt, color=red,-latex] (\aa, 2*\h) arc[start angle=0,end angle= 70, x radius =\aa cm , y radius =\bb cm];

\draw[line width = 1.5pt, color=red,-latex] (-\aa, 2*\h) arc[start angle=-180,end angle= -100, x radius =\aa cm , y radius =\bb cm];

% Dirac point
\fill[black] (0,\h) circle (5pt);

\end{tikzpicture}

\end{document}

enter image description here

With straight arrows:

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{bending}

\begin{document}
\begin{tikzpicture}
\def\h{4.6}
\def\a{2}
\def\b{0.5}
\def\aa{2.3}
\def\bb{0.75}
\definecolor{side}{RGB}{65,134,198}
\definecolor{middle}{RGB}{126,169,208}
\definecolor{top}{RGB}{35,104,168}
\definecolor{darkerred}{RGB}{223,51,59}
\definecolor{lighterred}{RGB}{236,123,127}

\def\shadebody{\fill[
    left color=top,
    right color=top,
    middle color=side,
    shading=axis,
    opacity=1
    ] }
\def\shadetop{\fill[
    left color=darkerred,
    right color=darkerred,
    middle color=lighterred,
    shading=axis,
    opacity=1
    ] }


\shadebody
  (\a,0) -- (0,\h) -- (-\a,0) arc (180:360:\a cm and \b cm);
\draw[line width = 0.5pt]
  (-\a,0) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

  %upper part
\shadetop
(0,2*\h) circle (\a cm and \b cm);

\shadebody
(\a,2*\h) -- (0,\h) -- (-\a,2*\h) arc (180:360:\a cm and \b cm);

% draw circumfering line
\draw[line width = 0.5pt] (-\a,2*\h) arc (180:360:\a cm and \b cm) -- (0,\h) -- cycle;

%\draw[line width = 0.5pt] (\a,2*\h) arc (0:180:\a cm and \b cm);

% circle on top
\draw[line width = 1.5pt, color=red] (0, 2*\h) circle (\a cm and \b cm);

\draw[line width = 1.5pt, color=red,-latex] ([shift={(8pt,-3pt)}]0, 2*\h-\bb) -- +(10:1.5cm);

\draw[line width = 1.5pt, color=red,-latex] ([shift={(-12pt,3pt)}]0, 2*\h+\bb) -- +(190:1.5cm);

\draw[line width = 1.5pt, color=red,-latex] ([shift={(-8pt,13pt)}]\aa, 2*\h) -- +(165:1.5cm);

\draw[line width = 1.5pt, color=red,-latex] ([shift={(8pt,-13pt)}]-\aa, 2*\h) -- +(-15:1.5cm);

% Dirac point
\fill[black] (0,\h) circle (5pt);

\end{tikzpicture}

\end{document}

enter image description here

Adjust the initial point and angles as you wish.

3
  • Thanks for the great answer, I need straight arrows though. Is that possible as well?
    – ElDoe
    Sep 22, 2015 at 11:27
  • 3
    @ElDoe Sure. See the edit.
    – user11232
    Sep 22, 2015 at 12:51
  • 2
    Thanks! This community really is amazing and helps beginners like me to accomplish great Latex documents :)
    – ElDoe
    Sep 22, 2015 at 13:07

You must log in to answer this question.

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