绘制方形网格和三角形网格

绘制方形网格和三角形网格

我想知道是否有办法对乳胶图像中这些规则的正方形和三角形格子进行编码。我知道如何生成规则多边形(正方形、三角形、六边形等),但我想知道是否有办法创建这些格子。

在此处输入图片描述在此处输入图片描述

答案1

可能像这样吗?

\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}

在此处输入图片描述

答案2

如果你想要一个带有点的规则三角网格,你可以尝试这个(基于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}

如果你想在方格上添加点,只需嵌套两个\foreach循环,如下所示:

带点的方格

    \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}

相关内容