如何将圆(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}
如果这不是您想要的,您必须更加具体。