error de tikz en la curva desde los nodos

error de tikz en la curva desde los nodos

Puede que esto sea bien conocido, pero no recuerdo haberlo encontrado antes. Aquí hay un ejemplo mínimo:

\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]
\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}
\end{center}

\end{document}

En la imagen rotada, la línea no está unida correctamente a los nodos:

ingrese la descripción de la imagen aquí

¿Es eso realmente un error o me falta algo? ¿Alguna solución conocida?

Respuesta1

Estoy de acuerdo con Shady Puck en que esto no es un error. Sin embargo, una forma posiblemente más precisa de explicar lo que está sucediendo es recordar que, por defecto, los nodos no se transforman. Si desea transformarlos, es decir, someter los anclajes de los nodos a las transformaciones, debe decir transform shape. (En su entorno, es necesario deshacer la transformación de escala para que coincida con el resultado presumiblemente deseado).

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

ingrese la descripción de la imagen aquí

Respuesta2

No es un error: el comportamiento se soluciona fácilmente.

Cuando especifica un modificador para la imagen completa, ¿qué TikZ lo que hace es aplicar este modificador a la imagen.ycada objeto individualmente. Por tanto, es necesario compensar esta rotación individual de la general con nuestras propias rotaciones proporcionales individualizadas. Después de jugar con las señales durante un segundo, obtuve este código para producir este resultado.

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

ingrese la descripción de la imagen aquí

información relacionada