Проблемы с pgfmath

Проблемы с pgfmath

Я нарисовал график параболы y = 0.5 - a x^2, которая пересекает ось x в точках "корней" 0.75и -0.75имеет изгиб в точке с координатой (0, 0.5). И я хочу отметить точку на параболе, которая имеет координату 0.33 * \rootPositionна оси x. (Вот \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 обрабатывает его достаточно хорошо для большинства случаев. Символ подчеркивания — это команда индекса mathmode, и вы можете спокойно избегать его с другими типами.

Основная проблема в том, что математические операции не расширяются до результата, когда встречаются на пути. Они сохраняют результат в вызываемом макросе \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}

введите описание изображения здесь

Связанный контент