我是 tikz 的新手,正在努力弄清楚如何使用我刚刚定义的变量来定义变量。我认为下面代码中的问题来自以下部分:
\def\vx{\asx-\sqx}
\def\vy{\asy-\sqy}
\def\magv{sqrt({\vx*\vx} + {\vy*\vy})}
\def\propx{\sqx + \vx/\magv+\winsetshock}
\def\propy{\sqy + \vy/\magv+\winsetshock}
我收到的错误是:
"Package pgf Error: no shape is known.
...
\node at (\propx,\propy){\textbf{$p$}};"
你知道我哪里做错了吗?
此外,关于如何使其更适用于其他 tikz 新手的任何建议都非常感谢...
\usetikzlibrary{calc}
\def\axisoffset{0.1};
\def\labeloffset{.05};
\def\winsetshock{.1}
\def\sqx{.5}
\def\sqy{.5}
\def\asx{.7}
\def\asy{.9}
\def\vx{\asx-\sqx}
\def\vy{\asy-\sqy}
\def\magv{sqrt({\vx*\vx} + {\vy*\vy})}
\def\propx{\sqx + \vx/\magv+\winsetshock}
\def\propy{\sqy + \vy/\magv+\winsetshock}
\foreach \i in {0, \thexshift}{
\foreach \j in {0}{
\begin{scope}[shift={(\i,\j)}]
\draw[thick] (0, -\axisoffset) -- (1, -\axisoffset);
\draw[thick] (-\axisoffset,0) -- (-\axisoffset, 1);
\end{scope}
}
}
\def\laboffset{-.35};
\begin{scope}[shift={(0,0)}]
\node at (.5, 1.25) {\textbf{Non-crisis}};
\draw[dotted] (\sqx,\sqy) circle [radius=\winsetshock];
\draw[dashed] (.5,.9) -- (.7, .1);
\node at (\sqx,\sqy) {\textbf{$SQ$}};
\node at (\asx,\asy) {\textbf{$AS$}};
\node at (\propx,\propy) {\textbf{$p$}};
\end{scope}
答案1
计算可以通过以下方式进行\pgfmathsetmacro
:
\pgfmathsetmacro\vx{\asx-\sqx}
\pgfmathsetmacro\vy{\asy-\sqy}
\pgfmathsetmacro\magv{sqrt(\vx*\vx + \vy*\vy)}
\pgfmathsetmacro\propx{\sqx + \vx/\magv+\winsetshock}
\pgfmathsetmacro\propy{\sqy + \vy/\magv+\winsetshock}