pgfmath の問題

pgfmath の問題

y = 0.5 - a x^2私は、x 軸を「根」点とで交差し0.75-0.75座標 で曲がる放物線グラフを描きました(0, 0.5)。そして、放物線上に、0.33 * \rootPositionx 軸上の座標 を持つ点をマークしたいと思います。(ここには\rootPosition数値 があります0.75)。私は次のコードを書きました。

\documentclass[tikz]{standalone}
\usepackage{tikz, pgfmath} 

\begin{document}
\begin{tikzpicture} [scale=3, >=stealth]

\def\bendPosition{0.5};
\def\rootPosition{0.75};
\def\coeffA{\pgfmathdivide{\bendPosition}{\pgfmathpow{\rootPosition}{2}}};

\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);

\def\arbitraryPosition{0.33 * \rootPosition};

\coordinate (arbitrary_point) at (\arbitraryPosition, \bendPosition - \coeffA* \pgfmathpow{\arbitraryPosition}{2}));

\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}
\end{document}

! Incomplete \iffalse; all the text ignored after line 14しかし、このコードをコンパイルすると、 14行目が次のようなエラーになります。 \coordinate (arbitrary_point)..

どうしたの?

答え1

TikZ はほとんどの場合に十分に処理しますが、マクロ名にはアンダースコア文字を使用しないでください。アンダースコア文字は数式モードの添え字コマンドであり、他の型では安全に回避できます。

主な問題は、パス上で数学演算が見つかったときに結果に展開されないことです。数学演算は結果を というマクロに保存し\pgfmathresult、パーサーはそれを参照する必要がありますが、数学演算子は参照できません。

\begin{tikzpicture} [scale=3, >=stealth]
\def\bendPosition{0.5};
\def\rootPosition{0.75};
\pgfmathsetmacro\coeffA{\bendPosition/(\rootPosition)^2}
\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);
\pgfmathsetmacro\arbitraryPosition{0.33 * \rootPosition}
\coordinate (arbitrary_point) at (\arbitraryPosition, {\bendPosition - \coeffA* (\arbitraryPosition)^2});
\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}

ここに画像の説明を入力してください

関連情報