难以使用先前定义的变量来定义变量

难以使用先前定义的变量来定义变量

我是 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}

相关内容