在tikz中不均匀地分割圆圈

在tikz中不均匀地分割圆圈

如何将圆(tikz 形状的圆)分成两部分。但是,我希望分割不均匀,即顶部占面积的 30%,底部占剩余的 70%。

谢谢

答案1

如果要填充圆弧,使圆弧占据圆的指定面积,则需要迭代求解面积方程中心角的段。

这里有一种方法可以做到这一点牛顿法

\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathsetmacro\radius{1}

\tikzset{ % Declare the function and its derivative
    declare function={f(\a) = 1/(2*pi)*(2*\a - sin(2*deg(\a)));},
    declare function={fprime(\a) = 1/(2*pi)*(2 - cos(2*deg(\a)));}
}

\newcommand\newton[4]{ % arguments: function, derivative, start value, precision
\edef\a{#3}%
\pgfmathsetmacro\fold{#1}%
\pgfmathsetmacro\deriv{#2}%
\pgfmathsetmacro\a{\a-(\fold)/(\deriv)}%
\pgfmathsetmacro\residual{abs(#1)}%
\ifdim \residual pt > #4 pt%
    \newton{#1}{#2}{\a}{#4}%
\fi%
\edef\pgfmathresult{\a}%
}



\begin{tikzpicture}
\def\fraction{0.7}
\newton{f(\a)-\fraction}{fprime(\a)}{1}{0.00001}
\pgfmathsetmacro\angle{deg(\pgfmathresult)}

\fill [cyan!50]
    (-\angle-90:\radius)
    arc [
        start angle=-\angle-90,
        end angle=-90+\angle,
        radius=\radius
        ]
    -- (-\angle-90:\radius);
\draw (0,0) circle [radius=\radius] node {\pgfmathprintnumber{\fraction}};
\end{tikzpicture}
\end{document}

答案2

如果没有你想要的东西的模型,你很难理解你需要什么,或者你在哪里遇到了困难,但一种可能性是使用极坐标,如第 13.2.1 节(“画布、XYZ 和极坐标系”)中所述手动的

然后,您可以用角度和距离来指定坐标,而不是x用量级来指定坐标y。这是一种可能性:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \draw (0,0) circle [radius=1];
  \draw (36:1) -- (0,0) -- (144:1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果这不是您想要的,您必须更加具体。

相关内容