我在 PDF 文档中找到了开源的分形图,我喜欢这些分形的呈现方式和风格。现在我想创建类似的分形,也许是类似风格的科赫曲线或康托集,我的问题是:
我可以在哪里以及如何创建这样的图形?是 tikz 还是什么程序?作者是否将分形颜色设为特定的绿色?任何有关如何实现类似结果的建议都将不胜感激。
感谢 muzimuzhi Z!我找到了近乎完美的色彩阴影:
\path[顶部颜色=绿色!10!黑色!60,底部颜色=绿色!20,阴影角度=-120]
答案1
要让每个三角形或矩形都填充独立的渐变背景,必须单独填充每个三角形或矩形。这消除了基于嵌套装饰和 lindenmayer 系统的解决方案。
这是使用嵌套图片的尝试。不是那么自动化,也不那么优雅,但它有效。希望它比基于节点的解决方案(如树和图)更快一些。
\documentclass[margin=5pt, tikz]{standalone}
%\usepackage{tikz}
\usetikzlibrary{shadings}
\newcount\sierlevel \sierlevel=4
\newdimen\siersize \siersize=2cm
\tikzset{
sierpinski tri/.pic={
\ifnum\sierlevel>0
\advance\sierlevel by -1
\shade (30:+\siersize) -- (150:+\siersize) -- (-90:+\siersize) -- cycle;
\divide\siersize by 2
\path ( 90:+2\siersize) pic {sierpinski tri}
(210:+2\siersize) pic {sierpinski tri}
(-30:+2\siersize) pic {sierpinski tri};
\fi
},
sierpinski rect/.pic={
\ifnum\sierlevel>0
\advance\sierlevel by -1
\shade (-\siersize, -\siersize) rectangle (\siersize,\siersize);
\divide\siersize by 3
\path[x=\siersize,y=\siersize]
foreach \x in {-1,0,1} {
foreach \y in {-1,0,1} {
\ifnum\numexpr\x*\x+\y*\y>0
(7*\x,7*\y) pic {sierpinski rect}
\fi
}
};
\fi
}
}
\begin{document}
\begin{tikzpicture}
\siersize=2cm
\foreach \i in {1,...,4} {
\sierlevel=\i
\begin{scope}[xshift=\i*8cm]
\fill[black]
( 90:+2\siersize) -- (210:+2\siersize) -- (-30:+2\siersize) -- cycle;
\path[top color=green!50!black!30, bottom color=green!50, shading angle=-120]
pic {sierpinski tri};
\end{scope}
}
\end{tikzpicture}
\begin{tikzpicture}
\siersize=1cm
\foreach \i in {1,...,4} {
\sierlevel=\i
\begin{scope}[xshift=\i*8cm]
\fill (-3.5\siersize, -3.5\siersize) rectangle (3.5\siersize, 3.5\siersize);
\path[top color=green!50!black!30, bottom color=green!50, shading angle=-120]
pic {sierpinski rect};
\end{scope}
}
\end{tikzpicture}
\end{document}
更新:在评论中@calculatormathematical 建议了一个更好的颜色阴影配置:
% old
\path[top color=green!50!black!30, bottom color=green!50, shading angle=-120]
% new
\path[top color=green!10!black!60, bottom color=green!20, shading angle=-120]