tori

Edit and compile if you like:

\documentclass[tikz,svgnames]{standalone}

\usepackage{mathtools}

\usetikzlibrary{calc}

\renewcommand\vec[1]{\boldsymbol{#1}}

\begin{document}
\begin{tikzpicture}[
    label/.style={black,draw,fill=white,ultra thin},
    vector/.style={ultra thick,-latex,DarkBlue}
  ]

  \def\xmin{-2} \def\xmax{6}
  \def\ymin{-2} \def\ymax{6}
  \def\gridscale{3}

  \begin{scope}
    \coordinate (origin) at (0,0);

    \draw [very thick,->] (\xmin,0) -- (\xmax,0);
    \draw [very thick,->] (0,\ymin) -- (0,\ymax);
    \clip [draw] (\xmin,\ymin) rectangle (\xmax,\ymax);

    \pgftransformcm{1}{0.2}{0.2}{1}{\pgfpoint{0}{0}}

    \draw[style=help lines,dashed] (\xmin-\xmax,\ymin-\ymax) grid[step=\gridscale] (-\xmin+\xmax,-\ymin+\ymax);

    \foreach \x in {\xmin,...,\xmax}{
        \foreach \y in {\ymin,...,\ymax}{
            \node[draw,circle,inner sep=1pt,fill] at (\gridscale*\x,\gridscale*\y) {};
          }
      }

    \draw [vector] (origin) -- (\gridscale,0) node [label,right=3] {$2 \pi \vec u$};
    \draw [vector] (origin) -- (0,\gridscale) node [label,above=3] {$2 \pi \vec v$};
    \draw [vector] (origin) -- (\gridscale,\gridscale) node [label,right=3] {$2 \pi (\vec u + \vec v)$};
    \filldraw[fill=gray,fill opacity=0.3] (origin) rectangle (\gridscale,\gridscale);
  \end{scope}

  \draw [|->,ultra thick] (1.2*\xmax,0) --++(0:0.3*\xmax) node [anchor = south, midway]{$\vec u = (1,0)$};

  \begin{scope}[xshift=2*\xmax cm]
    \coordinate (origin) at (0,0);

    \draw [very thick,->] (\xmin,0) -- (\xmax,0);
    \draw [very thick,->] (0,\ymin) -- (0,\ymax);
    \clip [draw] (\xmin,\ymin) rectangle (\xmax,\ymax);

    \pgftransformcm{1}{0}{0.2}{1}{\pgfpoint{0}{0}}

    \draw[style=help lines,dashed] (\xmin-\xmax,\ymin-\ymax) grid[step=\gridscale] (-\xmin+\xmax,-\ymin+\ymax);

    \foreach \x in {\xmin,...,\xmax}{
        \foreach \y in {\ymin,...,\ymax}{
            \node[draw,circle,inner sep=1pt,fill] at (\gridscale*\x,\gridscale*\y) {};
          }
      }

    \draw [vector] (origin) -- (\gridscale,0) node [label,below=3] {$2 \pi$};
    \draw [vector] (origin) -- (0,\gridscale) node [label,above=3] {$2 \pi \vec v$};
    \draw [vector] (origin) -- (\gridscale,\gridscale) node [label,right=3] {$2 \pi [(1,0) + \vec v]$};
    \filldraw[fill=gray,fill opacity=0.3] (origin) rectangle (\gridscale,\gridscale);
  \end{scope}
\end{tikzpicture}
\end{document}

Click to download: tori.tex
Open in Overleaf: tori.tex
This file is available on tikz.netlify.app and on GitHub and is MIT licensed.
See more on the author page of Janosh Riebesell..

Leave a Reply

Your email address will not be published.