Verwenden Sie tikzmath zwischen dem Verbinden von Koordinaten mit der Zeichenfunktion

Verwenden Sie tikzmath zwischen dem Verbinden von Koordinaten mit der Zeichenfunktion

Wenn ich das richtig verstehe, \drawkann man mit der Funktion Punkte mit Linien verbinden und dann (wenn die Linien zum selben Punkt zurückkehren) die umrissene Form ausfüllen. Wenn man den -- ( , )Befehl verwendet, wird einfach eine Linie vom vorherigen Punkt zu diesem Punkt gezeichnet. Ich möchte die tikzmathFunktion verwenden, um Punkte (nur hilfreich, wenn die Punkte auf einer durch eine elementare Funktion definierten Kurve liegen) in einer Schleife zu generieren foreachund nachfolgende Punkte zu verbinden. Unten ist ein Versuch, dies für einen Kreis zu tun:

\documentclass[tikz]{standalone}

\begin{document}
\usetikzlibrary{math}
\def\npts{100}
    \begin{tikzpicture}
    \draw (0, 0) -- (0, 0)
    \foreach \num in {1, 2, ..., \npts}
    {
        \tikzmath{
            \xspace = 2*pi/\npts;
            \t1 = \xspace*(\num - 1);
            \x1 = sin(\t1);
            \y1 = cos(\t1);
        }
        -- (\x1, y1)
    }
    -- cycle;
    \end{tikzpicture}
\end{document} 

Es scheint, als würde der \tikzmathBefehl den \drawBefehl auf eine Weise unterbrechen, die dazu führt, dass er nicht kompiliert wird. Gibt es eine Möglichkeit, dies zu umgehen?

Antwort1

Ja, es gibt mindestens eine Möglichkeit: Verwenden Sie „evaluieren“ (anstelle von \tikzmath) innerhalb der Zeichenoptionen und definieren Sie zwei Funktionen x(i) und y(i).

\documentclass[tikz]{standalone}

\begin{document}
\usetikzlibrary{math}
    \begin{tikzpicture}
    \draw[
          evaluate={
               \npts=100;
               \xspace = 360/\npts; % 2pi=360
               %
               function x(\i){
                      \t=\xspace*(\i - 1);
                      return cos(\t);
                      };
             %
              function y(\i){
                     \t=\xspace*(\i - 1);
                      return sin(\t);
                     };
       }
           ] (0, 0) foreach \num in {1, 2, ..., \npts}
                      {
                        -- ({x(\num)},{y(\num)})
                      }
             -- cycle;
    \end{tikzpicture}
\end{document} 

verwandte Informationen