Tikz:围绕圆圈标记并绘制集中箭头

Tikz:围绕圆圈标记并绘制集中箭头

我有以下代码:

\documentclass{standalone}

\usepackage{tikz}
  \usetikzlibrary{math,arrows.meta}

\begin{document}

  \tikzmath{\radiusarrow = 3;
            \radiusmax = 4;}
  \centering
  \begin{tikzpicture}[>=stealth]

     \draw (0,0) circle (\radiusmax) ;

    \foreach \ang/\lab/\dir in {
      0/right,      
      15/right,
      30/{above right},
      45/{above right},
      60/{above right},
      75/above,
      90/above,
      105/above,
      120/{above},
      135/{above left},
      150/left,
      165/left,
      180/left,
      195/{below left},
      210/below,
      225/below,
      240/below,
      255/{below},
      270/{below},
      285/right,
      300/right,
      315/right,
      330/right,
      345/right} {
       \draw [dashed,lightgray] (0,0) -- (\ang:\radiusmax) ;
       \node at (\ang:\radiusmax) [\dir] {\ang$^\circ$}; % label
     }

     \draw[-{Latex[length=3cm, width=13]},red] (255:\radiusarrow) -- (0,0) ;
     \draw[-{Latex[length=3cm, width=13]},red] (315:\radiusarrow) -- (0,0) ;
  \end{tikzpicture} 

\end{document}

此代码绘制一个圆并用极角标记它。它还从圆的边缘到中心绘制了一些箭头(三角形)。此代码中有几件事我没有成功实现:

  1. 我没能成功地以“美观”的方式放置角度标签,即与圆边缘保持相同的距离。

  2. 如您所见,我已定义参数(\radiusmax 为圆半径,\radiusarrow 为箭头长度),以便轻松更改圆和箭头的大小。但是,此尝试尚未完成,因为我仍需使用以下行中的选项 length=3cm 固定箭头长度(3cm):

    \draw[-{Latex[length=3cm, width=13]},red] (255:\radiusarrow) -- (0,0) ;
    

我曾尝试写:

\draw[-{Latex[length=\radiusarrow, width=13]},red] (255:\radiusarrow) -- (0,0) ;

以便箭头长度仅在代码开头固定。但这不起作用。

  1. 您是否注意到箭头没有完全到达中心?

您知道如何解决这些问题吗?

答案1

你可能喜欢 :-):

编辑:使用Latex箭头,它们不会在圆心处互相接触。用以下方法替换它,可以Triangle得到您想要的结果:

\documentclass[tikz, margin=3.14159 mm]{standalone}
\usepackage{lmodern}
\usetikzlibrary{arrows.meta}
\usepackage{siunitx}

\begin{document}
    \begin{tikzpicture}[
arr/.style = {-{Triangle[length=\radiusarrow cm, width=25]}, red}
                        ]
\def\radiusarrow{3};
\def\radiusmax {4}
%%%
\draw (0,0) circle[radius=\radiusmax];
%
\foreach \i in {0,15,...,345}
{
\draw[densely dashed, gray] (\i:\radiusmax)   
     coordinate[label={[text=black, anchor=\i+180]\i:\SI{\i}{\degree}}] (c\i) 
                                        -- (0,0);
}
\draw[arr] (255:\radiusarrow) -- (0,0) ;
\draw[arr] (315:\radiusarrow) -- (0,0) ;
    \end{tikzpicture}
\end{document}

如您所见,节点使用的是带标签的坐标,锚点是anchor=\i+180\i是标签位置的角度。用于标记角度的siunitx包是:\SI{...}{\degree}

在此处输入图片描述

以及圆心的放大倍数:

在此处输入图片描述

答案2

另一种可能性是设置anchor=\ang+180并使用circle节点。对于长度,您可以乘以 1cm,即length=\radiusarrow*1cm。尚不确定 #3。

\documentclass{standalone}

\usepackage{tikz}
  \usetikzlibrary{math,arrows.meta}

\begin{document}

  \tikzmath{\radiusarrow = 3;
            \radiusmax = 4;}
  \centering
  \begin{tikzpicture}[>=stealth]

     \draw (0,0) circle (\radiusmax) ;

    \foreach \ang in {0,15,...,345} {
       \draw [dashed,lightgray] (0,0) -- (\ang:\radiusmax) ;
       \node[circle, inner sep=1pt, anchor=\ang+180] at (\ang:\radiusmax)  {\ang$^\circ$}; % label
     }

     \draw[-{Latex[length=\radiusarrow*1cm, width=13]},red] (255:\radiusarrow) -- (0,0) ;
     \draw[-{Latex[length=\radiusarrow*1cm, width=13]},red] (315:\radiusarrow) -- (0,0) ;
  \end{tikzpicture} 

\end{document}

答案3

删除角度标签的节点锚定 ( [\dir])。对于箭头,我增加了宽度值,例如:

\documentclass{standalone}

\usepackage{tikz}
  \usetikzlibrary{math,arrows.meta}

\begin{document}

  \tikzmath{\radiusarrow = 3;
            \radiusmax = 4;}
  \centering
  \begin{tikzpicture}[>=stealth]

     \draw (0,0) circle (\radiusmax) ;

    \foreach \ang/\dir in {
      0/right,      
      15/right,
      30/{above right},
      45/{above right},
      60/{above right},
      75/above,
      90/above,
      105/above,
      120/{above},
      135/{above left},
      150/left,
      165/left,
      180/left,
      195/{below left},
      210/below,
      225/below,
      240/below,
      255/{below},
      270/{below},
      285/right,
      300/right,
      315/right,
      330/right,
      345/right} {
       \draw [dashed,lightgray] (0,0) -- (\ang:\radiusmax) ;
       \node at (\ang:\radiusmax+0.35){\ang$^\circ$}; % label
     }

     \draw[-{Latex[length=3cm, width=25]},red] (255:\radiusarrow) -- (0,0) ;
    \draw[-{Latex[length=3cm, width=25]},red] (315:\radiusarrow) -- (0,0) ;
  \end{tikzpicture} 

\end{document}

在此处输入图片描述

相关内容