
Если я правильно понимаю, \draw
функция позволяет соединять точки линиями, а затем (если линии возвращаются в ту же точку) заполнять очерченную фигуру. Если использовать команду, -- ( , )
она просто нарисует линию от предыдущей точки до этой точки. Я хотел бы использовать функцию tikzmath
для генерации точек (это просто полезно, когда точки находятся на кривой, заданной элементарной функцией) в foreach
цикле и соединения последующих точек. Ниже приведена попытка сделать это для окружности:
\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}
Похоже, что \tikzmath
команда прерывает \draw
команду таким образом, что она не компилируется. Есть ли способ обойти это?
решение1
Да, есть по крайней мере один способ: использовать estimate (вместо \tikzmath) внутри параметров рисования и определить две функции x(i) и 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}