Problemas com pgfmath

Problemas com pgfmath

Desenhei um gráfico de parábola y = 0.5 - a x^2que cruza o eixo x nos pontos "raízes" 0.75e -0.75tem uma curvatura na coordenada (0, 0.5). E quero marcar um ponto na parábola, que tem uma coordenada 0.33 * \rootPositionno eixo x. (Aqui \rootPositionestá um número 0.75). Eu escrevi o seguinte código

\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}

Mas quando compilo esse código, recebo o erro ! Incomplete \iffalse; all the text ignored after line 14, onde a linha 14 começa com\coordinate (arbitrary_point)..

O que está errado?

Responder1

Você não deve usar o caractere de sublinhado nos nomes das macros, mesmo que o TikZ o lide suficientemente bem na maioria dos casos. O caractere sublinhado é um comando subscrito do modo matemático e você pode evitá-lo com segurança com outros tipos.

O principal problema é que as operações matemáticas não se expandem para um resultado quando encontradas no caminho. Eles salvam o resultado em uma macro chamada \pgfmathresulte o analisador precisa ver essa, mas não os operadores matemáticos.

\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}

insira a descrição da imagem aqui

informação relacionada