如何遮蔽两个圆弧之间的区域

如何遮蔽两个圆弧之间的区域

我想对两条测地线之间的区域进行着色(a,b)(b,c)这样颜色就会随着区域变宽而变淡。这是代码

\documentclass{article}

\begin{document}

\begin{tikzpicture}

%circle

\draw (0,0) circle [radius=2];

% b

\filldraw (0,2) circle [radius=1pt];

\draw (0,2.3) node {$b$};

%a

\filldraw (-1,-1.73) circle [radius=1pt];

\draw (-1.2,-1.8) node {$a$};

%c

\filldraw (2,0) circle [radius=1pt];

\draw (2.3,0) node {$c$};

%geodesic (b,c)

\draw[name path=A, xshift=2cm, yshift=2cm, domain=180:270] plot(\x:2);

%geodesic (a,b)

\draw[name path=B, xshift=-6cm, yshift=1.6cm, domain=326:364] plot(\x:6);

\end{tikzpicture}

\end{document}

有人能告诉我怎么做吗?非常感谢!

答案1

下面给出我的解决方案,希望能够满足您的要求。基本思路是利用 来\fill填充由 a -- 测地线 (a,b) -- b -- 测地线 (b, c) -- c -- 测地线 (c, a) -- a 组成的区域。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{decorations,decorations.pathmorphing}
\usetikzlibrary{fadings}

\begin{document}

\begin{tikzpicture}

%circle

\draw (0,0) circle [radius=2];

% b

\filldraw (0,2) circle [radius=1pt];

\draw (0,2.3) node {$b$};

%a

\filldraw (-1,-1.73) circle [radius=1pt];

\draw (-1.2,-1.8) node {$a$};

%c

\filldraw (2,0) circle [radius=1pt];

\draw (2.3,0) node {$c$};

\fill [path fading=south,top color=green!80!white, bottom color=blue!80!white, variable=\x]
(-1,-1.73)
-- plot[domain=326:364]({6*cos(\x)-6},{6*sin(\x)+1.6})
-- (0,2)
-- plot[domain=180:270]({2*cos(\x)+2}, {2*sin(\x)+2})
-- (2,0)
-- plot[domain=240:360]({2*cos(\x)}, {2*sin(\x)})
-- (-1,-1.73);

\end{tikzpicture}

\end{document}

遮阳方案的灵感来自Tikz:对路径进行着色而不进行任何填充但是,这种解决方案不会使颜色随着区域变宽而发生变化(也许更精确的path fading设置可以做到)。

结果图如下所示。

在此处输入图片描述

答案2

请注意,一些早期项目被过度绘制了。此外,圆弧是从端点绘制的,并根据角度和半径计算中心。添加等-- (B)不是必要的,但有助于调试代码。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\begin{document}

\begin{tikzpicture}
%circle
\draw (0,0) circle [radius=2];
% b
\filldraw (0,2) coordinate(B) circle [radius=1pt] node[above] {$b$};
%a
\filldraw (-1,-1.73) coordinate(A) circle [radius=1pt] node[below left] {$a$};
%c
\filldraw (2,0) coordinate(C) circle [radius=1pt] node[right] {$c$};
%geodesic (b,c)
\draw (B) arc[start angle=180, end angle=270, radius=2];
%geodesic (a,b)
\draw (A) arc[start angle=326, end angle=360, radius=6];
%shading
\shadedraw[shading=axis,shading angle=30]
  (A) arc[start angle=326, end angle=360, radius=6] --
  (B) arc[start angle=180, end angle=270, radius=2] --
  (C) arc[start angle=360, end angle=240, radius=2] -- cycle;
\end{tikzpicture}

\end{document}

演示

相关内容