
如果我理解正確的話,該\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
是的,至少有一種方法:在繪圖選項中使用評估(取代 \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}