I was wondering if there is a way of coding regular square and triangular lattices like these ones in the images on latex. I know how to generate regular polygons (square, triangle, hexagon etc), but I would like to know if there is a way to create these lattices as well.
Asked
Active
Viewed 1,361 times
2 Answers
3
Maybe like this?
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-0.2,-0.2) grid (4.2,3.2);
\end{tikzpicture}
\begin{tikzpicture}
\clip (-0.2,-0.2) coordinate (bl) rectangle (4.2,3.2) coordinate (tr);
\draw[xslant={1/sqrt(2)},yscale={1/sqrt(2)}] (-2,-0.2) grid (6,4.2);
\draw[xslant=-{1/sqrt(2)},yscale={1/sqrt(2)}] (-2,-0.2) grid (6,4.2);
\end{tikzpicture}
\end{document}
-
Thank you! How would I add the points on the intersections of these graphs? – causalityrefilm. Apr 19 '21 at 07:28
1
If you want a regular triangular grid with dots, you may try this (based on a solution by AndréC).

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\tikzset{d/.style={minimum width=2pt,inner sep=0pt,circle,fill=black}}
\begin{tikzpicture}
\def\nx{5}
\def\ny{3} \pgfmathsetmacro\nyy{(2+2*\ny)*sin(60)}
\draw[cyan] (0,0) rectangle (\nx +1,\nyy);
\foreach \j in {0,...,\ny} {
\foreach \i in {0,...,\nx} {
\draw[cyan](0:\i)++(90:{(1+2*\j)*sin(60)})--++(1,0);
\draw[cyan](0:\i) ++(60:\j) ++(120:\j) node[d] {} --++(60:2) node[d] {} --++(-1,0) node[d] {} --++(-60:1) node[d] {} --++(-60:1) node[d] {};
}
}
\end{tikzpicture}
\end{document}
And if you want to add dots on your square grid, just nest two \foreach loops, like this:
\begin{tikzpicture}
\def\nx{6} \def\ny{4}
\draw [cyan] (0,0) grid (\nx,\ny);
\foreach \i in {0,...,\nx}
\foreach \j in {0,...,\ny}
\node[d] at (\i,\j) {};
\end{tikzpicture}
SebGlav
- 19,186




draw [step=.5](0,0)grid(2,1.5);for example. See the14.8 The Grid Operationin the pgfmanual. – AndréC Apr 19 '21 at 05:41