在 tikz 中用三种颜色绘制圆圈

在 tikz 中用三种颜色绘制圆圈

我想要一个圆,其圆周用三种不同的颜色着色,类似于下面的但是是一条线并且只有三种颜色:

像这样

我最初尝试

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}

\begin{tikzpicture}
    \draw [red] (0,0) arc [radius=1, start angle=0, end angle=120];
    \draw [green] (1,0) arc [radius=1, start angle=120, end angle=240];
    \draw [blue] (0,0) arc [radius=1, start angle=240, end angle=360];
\end{tikzpicture}

\end{document}

但这并不能给出正确的结果,并且函数的参数使得我很难实现我所想的结果。

答案1

问题在于,arc从一个坐标(称之为 A)开始,到角度 X 结束,半径为 1 的点将假定 A 位于半径为 1 的圆周上的角度为 X 的点。

因此,您首先arc假设(0,0)位于半径为 1 的圆周上的零度。这意味着圆心必须位于(-1,0)

但是你的第二个arc假设是(1,0)位于半径为 1 的圆周上的 120 度。所以中心一定位于(1.5,{.5*(sqrt(3))}

最后,第三个arc假设(0,0)位于半径为 1 的圆周上的 240 度。所以中心一定位于({cos(60)},{sin(60)})

[难以置信的是,我在深夜这个时候没有搞乱几何图形。]

我建议改用极坐标。这样你的arcs 就可以从 开始(0:1)(120:1)这样(240:1)事情就简单多了。

\documentclass[border=10pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw [red] (0:1) arc [radius=1, start angle=0, end angle=120];
  \draw [green] (120:1) arc [radius=1, start angle=120, end angle=240];
  \draw [blue] (240:1) arc [radius=1, start angle=240, end angle=360];
\end{tikzpicture}
\end{document}

joining up <code>arc</code>s

答案2

我正在发布这段代码,它来自 Zarko 在相关问题上删除的回答(TikZ:具有颜色过渡的圆圈)。这不是我的代码,所以我把答案放在了社区维基上。

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

\begin{document}
\begin{tikzpicture}[radius=32mm]
\foreach \i [count=\ii from 0] in {red, green, blue}
    \fill[\i] (0,0) -- (\ii*120:32mm)
                    arc[start angle=\ii*120,delta angle=120]
                    -- cycle;
    \fill[white] (0,0) circle (16mm);
\end{tikzpicture}
\end{document}

output of code

要添加各部分之间的空白,可以使用\fill[\i, draw=white, very thick]。要使条形变细,请调整中间白色圆圈的大小。

答案3

编辑:

cfr 的评论让我更仔细地阅读了你的问题。

当然,如果你只需要一条线,你可以增加白色内圆的半径,例如:

\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\pagestyle{empty}
\begin{document}
    \begin{tikzpicture}
        \tkzDefPoint(0,0){O}
        \foreach \mycolor/\mygrad in {red/0,green/120,blue/240}
            \tkzDrawSector[R,draw=white,fill=\mycolor](O,1)(\mygrad,\mygrad+120);
        \fill[white] (0,0) circle (.95); % <--- here put the value you like
    \end{tikzpicture}
\end{document}

enter image description here

原始答案:

您还可以使用tkz-euclide包:

\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\pagestyle{empty}
\begin{document}
    \begin{tikzpicture}
        \tkzDefPoint(0,0){O}
        \foreach \mycolor/\mygrad in {red/0,green/120,blue/240}
            \tkzDrawSector[R,draw=white,fill=\mycolor](O,1)(\mygrad,\mygrad+120);
        \fill[white] (0,0) circle (.5);  
    \end{tikzpicture}
\end{document}

enter image description here

相关内容