
Wenn ich das richtig verstehe, \draw
kann 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 tikzmath
Funktion verwenden, um Punkte (nur hilfreich, wenn die Punkte auf einer durch eine elementare Funktion definierten Kurve liegen) in einer Schleife zu generieren foreach
und 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 \tikzmath
Befehl den \draw
Befehl 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}