Ändern der Farbe eines einzelnen Intervalls in einem mit dem Befehl „Decorate“ erstellten Cantor-Set

Ändern der Farbe eines einzelnen Intervalls in einem mit dem Befehl „Decorate“ erstellten Cantor-Set

Ich habe das folgende TiKZ-Bild eines Cantor-Sets.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{decorations.fractals}
\begin{document}
 \begin{tikzpicture}[decoration=Cantor set,line width=2mm]
      \draw (0,0) -- (12,0);
      \draw decorate{ (0,-.5) -- (12,-.5) };
      \draw decorate{ decorate{ (0,-1) -- (12,-1) }};
      \draw decorate{ decorate{ decorate{ (0,-1.5) -- (12,-1.5) }}};
      \draw decorate{ decorate{ decorate{ decorate{ (0,-2) -- (12,-2) }}}};
      \draw decorate{ decorate{ decorate{ decorate{ decorate{ (0,-2.5) -- (12,-2.5) }}}}};
      \draw decorate{ decorate{ decorate{ decorate{ decorate{ decorate{ (0,-3) -- (12,-3) }}}}}};
    \end{tikzpicture}
\end{document}

Wie ändere ich die Farbe eines einzelnen Intervalls in diesem Bild, beispielsweise des dritten von links in der vierten Zeile?

Antwort1

Bildbeschreibung hier eingeben

Sie müssen die Mathematik hinter der Konstruktion des Cantor-Sets anwenden. Ich habe Ihren Code leicht modifiziert und einige Parameter eingefügt; hauptsächlich, \N = 3um das modifizierte Segment zu erhalten. Tatsächlich habe ich zwei Segmente modifiziert, um die verwendete mathematische Formel zu veranschaulichen.

Der Code

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{decorations.fractals}
\usetikzlibrary{math}
\begin{document}

\begin{tikzpicture}[evaluate={%
    real \L, \dy; \L = 12; \dy = -.5;
    integer \N; \N = 3;},
  decoration=Cantor set, line width=2mm]
  \draw (0, 0) -- ++(\L, 0);
  \draw decorate{ (0, 1*\dy) -- ++(\L, 0) };
  \draw decorate{
    decorate{ (0, 2*\dy) -- ++(\L, 0) }
  };
  \draw decorate{
    decorate{
      decorate{ (0, 3*\dy) -- ++(\L, 0) }
    }
  };
  \draw decorate{
    decorate{
      decorate{
        decorate{ (0, 4*\dy) -- ++(\L, 0) }
      }
    }
  };
  \draw decorate{
    decorate{
      decorate{
        decorate{
          decorate{ (0, 5*\dy) -- ++(\L, 0) }
        }
      }
    }
  };
  \draw decorate{
    decorate{
      decorate{
        decorate{
          decorate{
            decorate{ (0, 6*\dy) -- ++(\L, 0) }
          }
        }
      }
    }
  };
  \draw[red] ({\L*(2/pow(3, \N-1))}, \N*\dy)
  -- ++({\L*(1/pow(3, \N))}, 0);
  \draw[blue] ({\L*(2/pow(3, \N-1) +2/pow(3, \N))}, \N*\dy)
  -- ++({\L*(1/pow(3, \N))}, 0);
\end{tikzpicture}
\end{document}

verwandte Informationen