tikz bug in curve to from nodes

I agree with Shady Puck that this is not a bug. However, an arguably more precise way of explaining what's going on is to recall that by default nodes do not get transformed. If you want to transform them, i.e. subject the node anchors to the transformations, you need to say transform shape. (In your setting, one needs to undo the scale transformation to match the presumably desired result.)

\documentclass[12pt,a4paper]{amsart}
\usepackage{tikz}
\begin{document}

\tikzset{vert/.style={circle,inner sep=1mm,draw}}
\tikzset{edge/.style={draw=#1,very thick}}
\begin{center}
\begin{tikzpicture}[scale=2.5]
\node[vert] (a) at (1.,1.3){};
\node[vert] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}[scale=2.5,rotate=225,transform shape]
\node[vert,scale=1/2.5] (a) at (1.,1.3){};
\node[vert,scale=1/2.5] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\end{center}
\end{document}

enter image description here


It's not a bug -- the behavior is easily fixed.

When you specify a modifier for the whole picture, what TikZ does is apply this modifier to the picture and each object individually. Therefore, it is necessary to offset this individual rotation from the general with our own proportional individualized rotations. After fiddling with the signs for a hot second, I got this code to produce this result.

\tikzset{vert/.style={circle,inner sep=1mm,draw}}
\tikzset{edge/.style={draw=#1,very thick}}
\begin{tikzpicture}[scale=2.5]
    \node[vert] (a) at (1.,1.3){};
    \node[vert] (b) at (1.7,1.3){};
    \draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}[scale=2.5,rotate=225]
    \node[vert,rotate=-225] (a) at (1.,1.3){};
    \node[vert,rotate=225] (b) at (1.7,1.3){};
    \draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}

enter image description here

Tags:

Tikz Pgf