描画関数を使用して座標を接続する間にtikzmathを使用する

描画関数を使用して座標を接続する間にtikzmathを使用する

私の理解が正しければ、この\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

はい、少なくとも 1 つの方法があります。描画オプション内で (\tikzmath の代わりに) 評価を使用し、2 つの関数 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} 

関連情報