具有预定义样式的随机模式

具有预定义样式的随机模式

我想用 Ti 创建以下图片Z. 但我不知道如何从数学上做到这一点;例如,如果满足该条件,则与图像相对应的矩形将转动并获得颜色。

目前我只能手动来做,也就是手动定位,手动填写。

使用节点:

\documentclass[border=5pt,tikz]{standalone}
\begin{document}
    \begin{tikzpicture}
        \node[inner sep=7pt] (a) {};
            \fill[orange] (a.north west) -- (a.south west) -- (a.south east) -- cycle;
            \fill[brown] (a.north west) -- (a.north east) -- (a.south east) -- cycle;
    \end{tikzpicture}
\end{document}

使用通常的选项:

\documentclass[border=5pt,tikz]{standalone}
\begin{document}
    \begin{tikzpicture}
        \fill[orange] (0,1) -- (0,0) -- (1,0) -- cycle;
        \fill[brown] (0,1) -- (1,1) -- (1,0) -- cycle;
    \end{tikzpicture}
\end{document}

以下是图片:

图像

(PS:忽略图片中的“波浪”——它必须是直线)

答案1

这里有一个建议:将模式的元素创建为saveboxes(以减少编译时间并避免嵌套tikzpictures 或更复杂的语法),并以随机方式使用它们,并进行 90 度随机旋转。易于推广。

\documentclass[border=5pt,tikz]{standalone}
\newsavebox{\obbox}
\sbox\obbox{\begin{tikzpicture}%
\fill[orange] (0,1) -- (0,0) -- (1,0) -- cycle;%
\fill[brown] (0,1) -- (1,1) -- (1,0) -- cycle;%
\end{tikzpicture}}
\newsavebox{\owbox}
\sbox\owbox{\begin{tikzpicture}%
\fill[orange] (0,1) -- (0,0) -- (1,0) -- cycle;%
\fill[white] (0,1) -- (1,1) -- (1,0) -- cycle;%
\end{tikzpicture}}
\newsavebox{\bwbox}
\sbox\bwbox{\begin{tikzpicture}%
\fill[brown!60] (0,1) -- (0,0) -- (1,0) -- cycle;%
\fill[white] (0,1) -- (1,1) -- (1,0) -- cycle;%
\end{tikzpicture}}
\newsavebox{\dwbox}
\sbox\dwbox{\begin{tikzpicture}%
\fill[brown!80!black] (0,1) -- (0,0) -- (1,0) -- cycle;%
\fill[white] (0,1) -- (1,1) -- (1,0) -- cycle;%
\end{tikzpicture}}
\newcommand{\drawbox}[1]{\ifcase#1%
\usebox{\obbox}%
\or%
\usebox{\owbox}%
\or%
\usebox{\bwbox}%
\or%
\usebox{\dwbox}%
\fi}
\begin{document}
    \begin{tikzpicture}
    \foreach \X in {1,...,8}
    { \foreach \Y in {1,...,8}
     {\pgfmathtruncatemacro{\randOne}{4*abs(rand)}
     \pgfmathtruncatemacro{\randFlip}{2*abs(rand)}
     \node[rotate={90*\randFlip}] at (\X,\Y) {\drawbox{\randOne}};
     }
     }
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容