当指定圆心时在 tikz 中绘制圆弧

当指定圆心时在 tikz 中绘制圆弧

有时可以tikz通过指定

  • 对应圆的中心
  • 它的半径
  • 初始/最终角度

即定义圆弧的“自然”方式,而不是“圆弧的第一个点”。

有办法吗?

答案1

您可以使用参数化

x(t)=a+r*cos(t)
y(t)=b+r*sin(t)

其中r是圆的半径,(a,b)是圆心的坐标。在 Tikz 中可以按如下方式实现:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
   \draw [red,thick,domain=0:90] plot ({cos(\x)}, {sin(\x)});
   \draw [blue,thick,domain=180:270] plot ({cos(\x)}, {sin(\x)});
\end{tikzpicture}

\end{document}

产生

截屏

根据您的应用程序,您可能希望使用该pgfplots包来执行此操作。

此外,如果经常使用,请考虑\centerarc按照 Tom Bombadil 的评论建议定义一个自定义命令(这需要\usetikzlibrary{calc}):

\def\centerarc[#1](#2)(#3:#4:#5)% Syntax: [draw options] (center) (initial angle:final angle:radius)
    { \draw[#1] ($(#2)+({#5*cos(#3)},{#5*sin(#3)})$) arc (#3:#4:#5); }

然后通过调用来使用它

\centerarc[red,thick](0,0)(5:85:1)

答案2

您应该为此使用坐标变换,以获得弧的正确起点。例如,([shift=(t:r)] x, y)是正确的起点,(x,y)是中心,(t:r)是起点的极坐标。

完整示例:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw[help lines] (0,0) grid (4,3);
\draw (2,1) -- ++(30:2cm)
      (2,1) -- ++(60:2cm);
% Draw the arc which center is (2,1)
\draw[thick,red] ([shift=(30:1cm)]2,1) arc (30:60:1cm);
\end{tikzpicture}

\end{document}

答案3

符号:每条弧由<center><radius>和定义<init angle><final angle>

如果你想用一条路径连接多条弧线,你可以使用shift以下语法:

  • 初始点:([shift={(<init angle>:<radius>)}]<center>)

  • 绘制弧线:arc (<init angle>:<final angle>:<radius>)

例子 (橙色路径使用建议的语法和青色路径使用样式):

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw[fill=orange]
  ([shift={(-40:1cm)}]-1.1,0) arc (-40:40:1cm)
  --
  ([shift={(-40+180:1cm)}]1.1,0) arc (-40+180:40+180:1cm)
  -- cycle;
\end{tikzpicture}
\begin{tikzpicture}
  \tikzset{translate/.style={shift={(#1)}}}
  \draw[fill=cyan]
  ([translate=-40:1cm]-1.1,0) arc (-40:40:1cm)
  --
  ([translate=-40+180:1cm]1.1,0) arc (-40+180:40+180:1cm)
  -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:更简单的符号!

使用calcTikZ 库,您可以使用更简单的符号:

  • 初始点:($(<center>) + (<init angle>:<radius>)$)

例子:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  % center c1
  \coordinate (c1) at (0,0);

  \draw[fill=green]
  % radius=3mm, initial=0, final=90
  %([shift={(0:3mm)}]c1) arc (0:90:3mm)
  ($(c1) + (0:3mm)$) arc (0:90:3mm)
  --
  % radius=4mm, reversed
  ($(c1) + (90:4mm)$) arc (90:0:4mm)
  -- cycle;

  \draw[fill=yellow]
  % radius=4mm, initial=22.5, final=180
  ($(c1) + (22.5:4mm)$) arc (22.5:180:4mm)
  --
  % radius=5mm, reversed
  ($(c1) + (180:5mm)$) arc (180:22.5:5mm)
  -- cycle;

  % center c2
  \coordinate (c2) at (0,12mm);

  \draw[fill=red]
  % radius=5mm, initial=45, final=270
  ($(c2) + (45:5mm)$) arc (45:270:5mm)
  --
  % radius=6mm, reversed
  ($(c2) + (270:6mm)$) arc (270:45:6mm)
  -- cycle;

  \draw[fill=gray]
  % radius=6mm, initial=67.5, final=360
  ($(c2) + (67.5:6mm)$) arc (67.5:360:6mm)
  --
  % radius=7mm, reversed
  ($(c2) + (360:7mm)$) arc (360:67.5:7mm)
  -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案4

您可以创建一个新命令,例如这个

\documentclass[12pt]{standalone}
\usepackage{tikz}


\newcommand{\cercle}[4]{
\node[circle,inner sep=0,minimum size={2*#2}](a) at (#1) {};
\draw[red,thick] (a.#3) arc (#3:{#3+#4}:#2);
}
\begin{document}
\begin{tikzpicture}

\coordinate (center) at (3,2);

\cercle{center}{2cm}{25}{-90}
![\cercle{4,5}{1cm}{15}{130}][1]

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容