Tikz: Rotating a circle

See if

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\def\iangle{atan(4/5)}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 4);
\draw (O)--coordinate (mid) (A);
%
    \node[draw, circle, minimum size=2cm, rotate=\iangle, yshift=1cm] at (mid) {};
\end{tikzpicture}
\end{document}

is what you looking for :)

enter image description here


If there is no content (eg. text) that should be rotated, you can use a calculated border anchor to position the circle node. Then there is no need to know the size of this node.

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (A) at (5,4);
\draw 
  let \p1=(O), \p2=(A),
      \n1={atan2(\y2-\y1,\x2-\x1)},
      \n2={ifthenelse(abs(\n1)<=90,\n1-90,\n1+90}
  in  (O)--(A)
  node[pos=.5,draw,fill=yellow,minimum width=2cm,circle,anchor={\n2},outer sep=0pt]{}
;
\end{tikzpicture}
\end{document}

enter image description here


Transformations in scopes do not apply to nodes automatically. But you can enable this transformations for shapes too: add transform shape to the scope options.

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\def\iangle{atan(4/5)}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 4);
\draw (O)--coordinate[pos=0.5] (mid) (A);

\begin{scope}[rotate=\iangle,transform shape]
    \node[draw, circle, minimum size=2cm,yshift=1cm] at (mid) {};
\end{scope}
\end{tikzpicture}
\end{document}

Tags:

Tikz Pgf