有时可以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}
编辑:更简单的符号!
使用calc
TikZ 库,您可以使用更简单的符号:
- 初始点:
($(<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}