Divide a circle in N parts by N-1 choords with areas proportional to some data

110 Views Asked by At

I have a circle with radius $r$ and area $Area$. Suppose I want to divide this circle in $N$ parts using $(N-1)$ parallel chords basing on percentages.

I explain it better with an example:

$N = 5$

$datum1=25$, $datum2=5$, $datum3=10$, $datum4=50$, $datum5=10$

So the sum of the data is $100$.

What I would like to obtain is a circle divide by 4 parallel chords that divide the circle area in 5 parts: each area part should be proportional to the datum.

enter image description here

In this example:

  • the yellow area should be 25% of $Area$
  • the pink area should be 5% of $Area$
  • the purple area should be 10% of $Area$
  • the red area should be 50% of $Area$
  • the blue area should be 10% of $Area$

To draw that parts, I need to know the 4 point on the perpendicular diameter to the choord ($A, B, C, D$). How can I find that points?

I don't know how to start, I'm sure that I can't simply compute that points as percentage of the diameter because the area of the parts is important.

2

There are 2 best solutions below

1
On BEST ANSWER

As @heropup answered, there is no analytical solution for $$f=\frac{1}{2}+\frac{y\sqrt{1-y^2} +\sin ^{-1}(y)}{\pi }$$ but we can build very good approximations.

First of all, to introduce symmetry, let $k=\pi \left(f-\frac{1}{2}\right)$. So, we focus on $$k=y\sqrt{1-y^2} +\sin ^{-1}(y)\tag 1$$

For example, building the Taylor series around $y=0$ $$k=\sum_{n=0}^p a_n\,y^{2n+1}$$ where the $a_n$'s make the sequence $$\left\{2,-\frac{1}{3},-\frac{1}{20},-\frac{1}{56},-\frac{5}{576},-\frac{7}{1408},- \frac{21}{6656},-\frac{11}{5120},-\frac{429}{278528},\cdots\right\}$$ which is a very good approximation.

Now, using series reversion, we should get $$y=\sum_{n=0}^p b_n\,k^{2n+1}$$ where the $b_n$'s make the sequence $$\left\{\frac{1}{2},\frac{1}{48},\frac{13}{3840},\frac{493}{645120},\frac{37369}{185 794560},\frac{4732249}{81749606400},\frac{901188997}{51011754393600},\cdots\right\}$$

Even if it does not mean too much, using the above terms, the difference between lhs and rhs in $(1)$ is $1.12\times 10^{-5}\, k^{15}$

As @heropup did, trying with the above terms for $f=\frac 13$ (that is to say $k=-\frac \pi 6$) will give $y=-0.2649320842$ while the "exact" solution is $y=-0.2649320846$.

Fore sure, we could even do better but, using a reasonable estimate such as $$\color{blue}{y_0=k\frac{240-29 k^2}{480-78 k^2}}$$ for example, Newton method converges so fast that it would a pitty not to use it directly. This estimate corresponds to the Taylor series to $O(k^7)$.

For sure, these approximations become worse when $y \to 1$ (that is to say $k=\frac \pi 2$. For this region, we can better use $$k\sim \frac{\pi }{2}-\frac{4}{3} \sqrt{2} (1-y)^{3/2}\implies \color{blue}{y_0=1-\sqrt[3]{ \frac{9}{128} (\pi -2 k)^2}}$$

1
On

Unfortunately, your question does not have a simple closed-form solution. For a circle of radius $1$ centered at the origin on a Cartesian coordinate plane, a horizontal line at $y = y_0$ cuts the circle into two areas such that the fraction of the total area within the circle that is below the line is $$f(y_0) = \frac{1}{2} + \frac{y_0 \sqrt{1-y_0^2} + \sin^{-1} y_0}{\pi}, \quad -1 < y_0 < 1.$$ A suitable scaling transformation allows us to generalize to any positive radius $r$. But your question is asking how to find $y_0$ that yields a desired value of $f(y_0)$. That is to say, you want to find the inverse function of $f$. But such an inverse does not have a closed form.

If you can use a computer, Newton's method can be applied to numerically compute the inverse. For a given fraction $a$ of the circle's area we wish to enclose between $y = -1$ and $y = y_n$, we seek the root of $g(y) = f(y) - a = 0$, for which the recursion $$y_{n+1} = y_n - \frac{g(y_n)}{g'(y_n)} = \frac{\pi(1-2a) \sqrt{1-y_n^2}+2 y_n^3+2 \sqrt{1-y_n^2} \sin ^{-1}y_n - 2 y_n}{4 \left(y_n^2-1\right)}$$ with initial guess $y_0 = 0$ yields a sequence of approximations $\{y_n\}_{n \ge 0}$ that converges to the desired $y$-value. For example, if we set $a = 1/3$, so that we want a horizontal line that divides the unit circle into a ratio of $1 : 2$ with the smaller area being below the line, then we get the table $$\begin{array}{c|cc} n & y_n & f(y_n) \\ \hline 0 & 0. & 0.5 \\ 1 & -0.2617993877991494 & 0.3352572612077344 \\ 2 & -0.2649306995458483 & 0.3333341835804551 \\ 3 & -0.2649320846025036 & 0.3333333333335011 \\ 4 & -0.2649320846027769 & 0.3333333333333333 \\ 5 & -0.2649320846027769 & 0.3333333333333333 \end{array}$$ It doesn't take very many iterations to get good precision, due to the fact that $f$ is roughly linear across most of its domain. Then to get each division line, you would first calculate the cumulative list of percentages; e.g., from the bottom to the top, your example would have $a_1 = 0.1, a_2 = 0.6, a_3 = 0.7, a_4 = 0.75$. This gives us the table of $y$-values $$\begin{array}{c|c} a_i & y_0 \\ \hline 0.1 & -0.687049 \\ 0.6 & 0.157736 \\ 0.7 & 0.319692 \\ 0.75 & 0.403973 \end{array}$$