Tikz 自相似集的调整

Tikz 自相似集的调整

我在 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]

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

相关内容