网格定制

网格定制

我想要构建一个如下图所示的网格,其中每个网格点都被下面描述的两条曲线所包围。

第一条曲线:围绕点的轮廓形成加号“+”的图形。参见下图。

第二条曲线:围绕绘图点的轮廓,形成符号减号“-”。参见下图。

问题 1:如何构建像图中这样的网格,其中我有一个命令来选择上述哪条曲线围绕网格点?

问题 2:如何为网格分配颜色曲线和点?

问题 3 如何将网格中的点连接到上方、下方、左侧、右侧或任意对角线上的点?见下图。

问题 4 如何制作如下图所示的围绕多个网格的曲线?

答案1

作为如何实现我的评论的示例。您可以考虑以下代码。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\def\tminus{\node[minimum height=1.33cm]{\tikz\draw plot[smooth cycle, tension=0.25] coordinates{(-.5cm,-.5ex) (.5cm,-.5ex) (.5cm,.5ex) (-.5cm,.5ex)};};}
\def\tplus{\node[minimum height=1.33cm] {\tikz\draw plot[smooth cycle, tension=0.25] coordinates{(-.5ex,0) (-.5ex,-.5cm+.5ex) (-.5cm, -.5cm+.5ex) (-.5cm, -.5cm-.5ex) (-.5ex, -.5cm-.5ex) (-.5ex, -1cm) (.5ex,-1cm) (.5ex, -.5cm-.5ex) (.5cm, -.5cm-.5ex) (.5cm, -.5cm+.5ex) (.5ex, -.5cm+.5ex) (.5ex,0)};};}
\begin{document}
  \begin{tikzpicture}[every node/.style={anchor=center, minimum height=1cm, minimum width=1cm}]
    \matrix (grid) [matrix of nodes,column sep=10pt,row sep=10pt] {
      \tplus  & \tminus & \tplus  & \tplus  & \tminus\\
      \tplus  & \tplus  & \tminus & \tplus  & \tminus\\
      \tplus  & \tplus  & \tplus  & \tminus & \tminus\\
      \tplus  & \tminus & \tminus & \tplus  & \tminus\\
      \tplus  & \tplus  & \tplus  & \tminus & \tplus\\
    };
    \draw (grid-1-4) -- (grid-1-5);
    \draw (grid-1-4) -- (grid-2-4);
    \draw (grid-1-5) -- (grid-2-5);
    \draw (grid-2-5) -- (grid-3-5);
    \draw (grid-3-5) -- (grid-4-4);
    \draw (grid-4-4) -- (grid-4-3);
    \draw (grid-4-3) -- (grid-4-2);
    \draw (grid-4-2) -- (grid-4-1);
    \draw (grid-4-1) -- (grid-3-1);
    \draw (grid-3-1) -- (grid-3-2);
    \draw (grid-3-2) -- (grid-3-3);
    \draw ($(grid-3-3.center) + (1ex,1ex)$) -- ($(grid-2-4.center) - (1ex,1ex)$);

    \draw[rounded corners] (grid-1-1.north west) -- (grid-2-1.south west) -- (grid-2-2.south west) -- (grid-3-2.south west) -- (grid-3-2.south east) -- (grid-1-2.north east) -- cycle;
  \end{tikzpicture}
\end{document}

这导致

例子

请注意,连接并不完全简单。节点有边界框,如果你想在两个对角线之间获得“好看”的边缘,你必须进行一些手动工作,就像我在上一个绘制对角线中展示的那样。

此外,绘制一组符号周围的曲线也必须手动完成。这些事情也许可以自动化,但肯定不会简单或容易。

相关内容