Расчеты с TikZ

Расчеты с TikZ

Я не понимаю, почему значения не рассчитываются правильно. Что не так? Углы (начальный и конечный) для обеих стрелок должны быть равны.

\documentclass[10pt]{article}
\usepackage[a4paper,top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta,bending,decorations.text,positioning}

\def\centerarct[#1](#2)(#3:#4:#5)% Syntax: [draw options] (center) (start angle:end angle:radius)
{ \path[#1] ($(#2)+({#5*cos(-#3+90)},{#5*sin(-#3+90)})$) arc [start angle={-#3+90}, end angle={-#4+90}, radius=#5)]; }

\def\vectorl[#1](#2)(#3:#4:#5:#6)% Syntax: [draw options] (center) (total:start:end:radius)
{ \centerarct[#1](#2)({#5/#3*360}:{(#4-1)/#3*360+360}:#6); }

\begin{document}
 \begin{tikzpicture}
  \vectorl[draw=yellow!75!white,line width=5mm](0,0)(2500:1:2500:4.75);
  \centerarct[{Triangle[width=9mm,length=5mm]}-,scale=1.175,draw=violet!75!white,line width=5mm, postaction={decorate,decoration={text along path,text align={center,left indent=2.5mm},text={Test},raise=-1.25mm}}](0,0)(345.6:374.4:4.75);
  \vectorl[{Triangle[width=9mm,length=5mm]}-,scale=1.4,draw=violet!75!white,line width=5mm, postaction={decorate,decoration={text along path,text align={center,left indent=2.5mm},text={Test},raise=-1.25mm}}](0,0 )(2500:101:2400:4.75);  
 \end{tikzpicture}
\end{document}

решение1

Так как у вас есть , например, start angle={-#3+90}в \centerarct, вам нужна дополнительная пара скобок в определении \vectorl, иначе вы получите -x+360+90, вместо -(x+360)+90. То есть, вам нужно {((#4-1)/#3*360+360)}.

Однако из-за особенностей определения вам необходимо поменять местами начальные и конечные значения для желтого круга.

\documentclass[10pt]{article}
\usepackage[a4paper,top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta,bending,decorations.text,positioning}

\def\centerarct[#1](#2)(#3:#4:#5)% Syntax: [draw options] (center) (start angle:end angle:radius)
{ \path[#1] ($(#2)+({#5*cos(-#3+90)},{#5*sin(-#3+90)})$) arc [start angle={-#3+90}, end angle={-#4+90}, radius=#5)]; }

\def\vectorl[#1](#2)(#3:#4:#5:#6)% Syntax: [draw options] (center) (total:start:end:radius)
{ \centerarct[#1](#2)({#5/#3*360}:{((#4-1)/#3*360+360)}:#6); }

\begin{document}
\begin{tikzpicture}
  \vectorl[draw=yellow!75!white,line width=5mm](0,0)(2500:2500:1:4);

  \centerarct[{Triangle[width=9mm,length=5mm]}-,draw=violet!75!white,line width=5mm, postaction={decorate,decoration={text along path,text align={center,left indent=2.5mm},text={Test},raise=-1.25mm}}](0,0)(345.6:374.4:5);

  \vectorl[{Triangle[width=9mm,length=5mm]}-,draw=violet!75!white,line width=5mm, postaction={decorate,decoration={text along path,text align={center,left indent=2.5mm},text={Test},raise=-1.25mm}}](0,0)(2500:101:2400:6);  

\end{tikzpicture}
\end{document}

введите описание изображения здесь

Связанный контент