ich habe folgendes Problem:
Ich versuche einzelne Kontursegmente zu einem Kreis zusammenzufügen. Die Anzahl der Segmente ist im Parameter N hinterlegt. Bei kleinen N funktioniert alles wie es soll, jedoch habe ich bei größeren N (hier 36) einen Versatz in der Zeichnung. Woher kommt das und wie kann ich es beheben?
Hier das Beispiel:
\documentclass{standalone} \usepackage{tikz} \usetikzlibrary{fpu, calc, angles, intersections} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \usepackage{comment} \newcommand{\radiusOHL}[3]{ \path (#1)coordinate(M)% Mittelpunkt (#2)coordinate(A)% Anfangskoordinate (#3)coordinate(B)% Endkoordinate ; \path let \p1=(M), \p2=(A), \n1={veclen({\x2-\x1},{\y2-\y1})} in pic[draw=black,angle radius=\n1]{angle=A--M--B} ; } \begin{document} \begin{tikzpicture} % Parameter \def\N{36} \def\rot{90-360/\N} \def\bzhs{0.3} \def\nutoeffnung{0.8} \def\do{10} \def\di{7} \def\hzhs{0.4} \def\hrues{0.4} \def\hzks{0.1} \def\p{2} \def\delta{0.2} \def\alphap{0.5} \def\dw{1} \def\rotorcolor{gray!50} \def\statorcolor{gray} % Berechnungen \def\taupdeg{360/(2*\p)} \def\tauNdeg{360/\N} \pgfmathsetmacro\dzk{\di+\hzks*(\do-\di)}; \pgfmathsetmacro\drue{\do-\hrues*(\do-\di)}; \pgfmathsetmacro\dzhu{\do-(\hrues+\hzhs)*(\do-\di)}; \pgfmathsetmacro\dro{\di-2*\delta}; % Hilfslinien \path[color=gray,dashed, name path=DAS] (0,0)++(\rot:\do/2) arc(\rot:\rot+2*360/\N:\do/2);% node {\tiny DAS}; \path[color=gray,dashed, name path=DIS] (0,0)++(\rot:\di/2) arc(\rot:\rot+2*360/\N:\di/2);% node {\tiny DIS}; \path[color=gray,dashed, name path=DRUE] (0,0)++(\rot:\drue/2) arc(\rot:\rot+2*360/\N:\drue/2);% node {\tiny DRUE}; \path[color=gray,dashed, name path=DZK] (0,0)++(\rot:\dzk/2) arc(\rot:\rot+2*360/\N:\dzk/2);% node {\tiny DZK}; \path[color=gray,dashed,name path=GL] (0,0) -- (0, 1.1*\do/2);% node[above] {\tiny GL}; \path[color=gray,dashed,name path=GZ] (0,0) -- ({1.1*\do/2*sin(\nutoeffnung*360/(2*\N))}, {1.1*\do/2*cos(\nutoeffnung*360/(2*\N))});% node[above] {\tiny GZ}; \path[color=gray,dashed,name path=GR] (0,0) -- ({1.1*\do/2*sin(360/(2*\N))}, {1.1*\do/2*cos(360/(2*\N))});% node[above] {\tiny GR}; % Schnittpunkte & Koordinaten \path[name intersections={of=GL and DIS}](intersection-1) coordinate (c1);% node {\tiny 1}; \path[name intersections={of=GZ and DIS}](intersection-1) coordinate (c2);% node {\tiny 2}; \path[name intersections={of=GZ and DZK}](intersection-1) coordinate (c3);% node {\tiny 3}; \path (c3); \pgfgetlastxy{\xa}{\ya}; \pgfmathsetmacro\bzh{2*\bzhs*\xa}; \path[name path=BZH] ({\bzh/2 pt},0) -- ({\bzh/2 pt},1.1*\drue/2); \path ({\bzh/2 pt},\dzhu/2) coordinate (c4);% node{\tiny 4};% node{\tiny 5}; \path[name intersections={of=BZH and DRUE}](intersection-1) coordinate (c5);% node {\tiny 5}; \path[name intersections={of=GR and DRUE}](intersection-1) coordinate (c6);% node {\tiny 6}; \path[name intersections={of=GR and DAS}] (intersection-1) coordinate (c7);% node {\tiny 7}; \path[name intersections={of=GL and DAS}](intersection-1) coordinate (c8);% node {\tiny 8}; \path[name path=HLW] (c3) -- (c4); % Spiegelung \foreach \x in {2,3,4,5,6,7,8} { \path (c\x); \pgfgetlastxy{\xc}{\yc}; \path (-\xc, \yc) coordinate (c\x m);% node{\tiny \x m}; } % Koordinatendrehung STATOR %xr1s = x*cos phi+y*sin phi %yr1s = -x*sin phi + y*cos phi \pgfmathsetmacro\k{\N-1} %\foreach \i in {0,1,2,...,\k} { \foreach \i in {0,1,2,3,4,5} { \pgfmathsetmacro\phirot{\i*\tauNdeg} \foreach \x in {2,3,4,5,6,7,8} { \path (c\x); \pgfgetlastxy{\xc}{\yc}; \path ({\xc * cos(\phirot)+\yc * sin(\phirot)}, {-\xc * sin(\phirot)+\yc * cos(\phirot)}) coordinate (c\x rot);% node[above]{\scalebox{.2}{r\x rot}}; \path (c\x m); \pgfgetlastxy{\xc}{\yc}; \path ({\xc * cos(\phirot)+\yc * sin(\phirot)}, {-\xc * sin(\phirot)+\yc * cos(\phirot)}) coordinate (c\x mrot);% node[above]{\scalebox{.2}{r\x mrot}}; } % Kontur \radiusOHL{{0,0}}{c7rot}{c7mrot}; \radiusOHL{{0,0}}{c6rot}{c5rot}; \draw (c5rot) -- (c4rot); \draw (c4rot) -- (c3rot); \draw (c3rot) -- (c2rot); \radiusOHL{{0,0}}{c2rot}{c2mrot}; \draw (c2mrot) -- (c3mrot); \draw (c3mrot) -- (c4mrot); \draw (c4mrot) -- (c5mrot); \radiusOHL{{0,0}}{c5mrot}{c6mrot}; }; \end{tikzpicture} \end{document}