我想对两条测地线之间的区域进行着色(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}