尝试将评论转换为完整的答案如何确定 Tikz 中的箭头形状我认为我的解决方案偶然起作用了,并且 MWijnand 在to path
库中{x|y}scale
有负值时发现了错误的行为。
看一下这个例子:
\documentclass[tikz,border=2mm]{standalone}
\usepackage{bondgraph}
\usetikzlibrary[petri]
\begin{document}
\begin{tikzpicture}[thin,>=stealth, every place/.style={draw,thick,minimum size=6mm}]
\node[place] (pG) {$p_G$};
\node[place,right=3cm of pG] (pR) {$p_R$};
\draw[->] (pR) to [out=150, in=30] (pG);
\begin{scope}[yscale=-1]
\draw[->,blue] (pR) to [out=150, in=30] (pG);
\end{scope}
\begin{scope}[xscale=-1]
\draw[->,red] (pR) to [out=150, in=30] (pG);
\end{scope}
\begin{scope}[scale=-1]
\draw[->,green] (pR) to [out=150, in=30] (pG);
\end{scope}
\end{tikzpicture}
\end{document}
及其奇怪的结果。
我所期望的是,这pR.center
是路径的起点,也是pG.center
路径的终点。路径的out
角度会受到因素的影响scale
,绘制的路径将从边界上的相应交叉点开始。正如您在节点周围看到的pR
那样,这就是角度所发生的情况。out
pR
in
但角度(pG
节点)不会发生这种情况。in
角度将最终锚点固定在 pG.30
而不是 ,pG.center
正如预期的那样。它还会改变应用比例因子的入射角。
我认为这不对,我会填写错误报告。如果我错了或者您有更好的解决方案,请告诉我们。
答案1
这实际上是它应该如何工作的。in
和out
方向是在当前坐标系中计算的。
\documentclass[tikz,border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[thin,>=stealth, place/.style={circle, draw,thick,inner sep=1pt}]
\node[place] (pG) at (-1.5,0) {.};
\node[place] (pR) at (1.5,0) {.};
\draw[->] (pR) to [out=150, in=30] (pG);
\draw (pR) -- +(150:1) (pG) -- +(30:1);
\begin{scope}[yscale=-1,blue]
\draw[->] (pR) to [out=150, in=30] (pG);
\draw (pR) -- +(150:1) (pG) -- +(30:1);
\end{scope}
\begin{scope}[xscale=-1,red]
\draw[->] (pR) to [out=150, in=30] (pG);
\draw (pR) -- +(150:1) (pG) -- +(30:1);
\end{scope}
\begin{scope}[scale=-1,green]
\draw[->] (pR) to [out=150, in=30] (pG);
\draw (pR) -- +(150:1) (pG) -- +(30:1);
\end{scope}
\end{tikzpicture}
\end{document}
但您可以使用relative
样式来改变这种行为。
\documentclass[tikz,border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[thin,>=stealth, place/.style={circle, draw,thick,inner sep=1pt}]
\node[place] (pG) at (-1.5,0) {.};
\node[place] (pR) at (1.5,0) {.};
\draw[->,relative] (pR) to [out=-30, in=-150] (pG);
\begin{scope}[yscale=-1,blue]
\draw[->,relative] (pR) to [out=-30, in=-150] (pG);
\end{scope}
\begin{scope}[xscale=-1,red]
\draw[->,relative] (pR) to [out=-30, in=-150] (pG);
\end{scope}
\begin{scope}[scale=-1,green]
\draw[->,relative] (pR) to [out=-30, in=-150] (pG);
\end{scope}
\end{tikzpicture}
\end{document}