![具有预定义样式的随机模式](https://linux22.com/image/379057/%E5%85%B7%E6%9C%89%E9%A2%84%E5%AE%9A%E4%B9%89%E6%A0%B7%E5%BC%8F%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%A8%A1%E5%BC%8F.png)
我想用 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
这里有一个建议:将模式的元素创建为savebox
es(以减少编译时间并避免嵌套tikzpicture
s 或更复杂的语法),并以随机方式使用它们,并进行 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}