Probleme mit pgfmath

Probleme mit pgfmath

Ich habe eine Parabelgrafik gezeichnet y = 0.5 - a x^2, die die x-Achse an den "Wurzel"-Punkten schneidet 0.75und -0.75bei der Koordinate einen Knick hat (0, 0.5). Und ich möchte einen Punkt auf der Parabel markieren, der eine Koordinate 0.33 * \rootPositionauf der x-Achse hat. (Hier \rootPositionist eine Zahl 0.75). Ich habe den folgenden Code geschrieben

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

Aber wenn ich diesen Code kompiliere, erhalte ich den Fehler ! Incomplete \iffalse; all the text ignored after line 14, wobei Zeile 14 mit\coordinate (arbitrary_point)..

Was ist falsch?

Antwort1

Sie sollten in Makronamen keinen Unterstrich verwenden, auch wenn TikZ ihn in den meisten Fällen ausreichend gut handhabt. Der Unterstrich ist ein Mathmode-Indexbefehl und kann bei anderen Typen problemlos vermieden werden.

Das Hauptproblem besteht darin, dass mathematische Operationen nicht zu einem Ergebnis erweitert werden, wenn sie auf dem Pfad gefunden werden. Sie speichern das Ergebnis in einem aufgerufenen Makro \pgfmathresultund der Parser muss dieses sehen, aber nicht die mathematischen Operatoren.

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

Bildbeschreibung hier eingeben

verwandte Informationen