1 Introduction

Deciding whether a set of disks can be packed into a given container is a fundamental geometric optimization problem that has attracted considerable attention. Disk packing also has numerous applications in engineering, science, operational research and everyday life, e.g., for the design of digital modulation schemes [23], packaging cylinders [2, 9], bundling tubes or cables [26, 28], the cutting industry [27], or the layout of control panels [2], or radio tower placement [27]. Further applications stem from chemistry [29], foresting [27], and origami design [15].

Like many other packing problems, disk packing is typically quite difficult; what is more, the combinatorial hardness is compounded by the geometric complications of dealing with irrational coordinates that arise when packing circular objects. This is reflected by the limitations of provably optimal results for the optimal value for the smallest sufficient disk container (and hence, the densest such disk packing in a disk container), a problem that was discussed by Kraviz [14] in 1967: Even when the input consists of just 13 unit disks, the optimal value for the densest disk-in-disk packing was only established in 2003 [8], while the optimal value for 14 unit disks is still unproven. The enormous challenges of establishing densest disk packings are also illustrated by a long-standing open conjecture by Erdős and Oler from 1961 [22] regarding optimal packings of n unit disks into an equilateral triangle, which has only been proven up to \(n=15\). For other examples of mathematical work on densely packing relatively small numbers of identical disks, see [6, 7, 10, 18], and [11, 17, 24] for related experimental work. Many authors have considered heuristics for circle packing problems, see [12, 27] for overviews of numerous heuristics and optimization methods. The best known solutions for packing equal disks into squares, triangles and other shapes are continuously published on Specht’s website http://packomania.com [25].

For the case of packing not necessarily equal disks into a square container, Demaine et al. in 2010 [3] showed that deciding whether a given set of disks can be packed is \(\mathsf {NP}\)-hard by using a reduction from 3-Partition. This means that there is (probably) no deterministic polynomial-time algorithm that can decide whether a given set of disks can be packed into a given container.

On the other hand, the literature on exact approximation algorithms which actually give performance guarantees is small. Miyazawa et al. [19] devised asymptotic polynomial-time approximation schemes for packing disks into the smallest number of unit square bins. More recently, Hokama et al. [13] developed a bounded-space competitive algorithm for the online version of that problem.

The related problem of packing square objects has also been studied for a long time. The decision problem whether it is possible to pack a given set of squares into the unit square was shown to be strongly \(\mathsf {NP}\)-complete by Leung et al. [16], also using a reduction from 3-Partition. Already in 1967, Moon and Moser [20] found a sufficient condition. They proved that it is possible to pack a set of squares into the unit square in a shelf-like manner if their combined area, the sum of all squares’ areas, does not exceed 1/2. At the same time, 1/2 is the largest upper area bound one can hope for, because two squares larger than the quarter-squares shown in Fig. 1 cannot be packed. We call the ratio between the largest combined object area that can always be packed and the area of the container the problem’s critical density, or worst-case density.

Fig. 1
figure 1

a An instance of critical density for packing squares into a square. b An example packing produced by Moon and Moser’s shelf-packing. c An instance of critical density for packing disks into a square. d An example packing produced by Morr’s Split Packing

The equivalent problem of establishing the critical packing density for disks in a square was posed by Demaine et al. [3] and resolved by Morr et al. [5, 21]. Making use of a recursive procedure for cutting the container into triangular pieces, they proved that the critical packing density of disks in a square is \({\pi }/({3+2\sqrt{2}} )\approx 0.539\).

It is quite natural to consider the analogous question of establishing the critical packing density for disks in a disk. However, the shelf-packing approach of Moon and Moser [20] uses the fact that rectangular shapes of the packed objects fit well into parallel shelves, which is not the case for disks; on the other hand, the split packing method of Morr et al. [5, 21] relies on recursively splitting triangular containers, so it does not work for a circular container that cannot be partitioned into smaller circular pieces.

1.1 Results

We prove that the critical density for packing disks into a disk is 1/2: Any set of not necessarily equal disks with a combined area of not more than 1/2 can be packed into a disk of area 1; this is best possibly, as for any \(\varepsilon >0\) there are instances of total area \(1/2+\varepsilon \) that cannot be packed. See Fig. 2 for the critical configuration.

Fig. 2
figure 2

a A critical instance that allows a packing density no better than 1/2. b An example packing produced by our algorithm

Our proofs are constructive, so they can also be used as a constant-factor approximation algorithm for the smallest-area container of a given shape in which a given set of disks can be packed. Due to the higher geometric difficulty of fitting together circular objects, the involved methods are considerably more complex than those for square containers. We make up for this difficulty by developing more intricate recursive arguments. Moreover, we rely on computer calculations to prove several important inequalities, making use of interval arithmetic on sufficiently fine subdivisions of bounded spaces spanned by a constant number of real variables. For more details see the proof of Lemma 4.9.

2 Preliminaries

Let \(r_1,\dots ,r_n\) be a set of disks in the plane. Two point sets \(A,B\subset \mathbb {R}^2\) overlap if their interiors have a point in common. A container disk \(\mathcal {C}\) is a disk that must contain disks from \(\{r_1,\dots ,r_n\}\). The original container disk O is the unit disk. Due to recursive calls of our algorithm there may be several container disks that lie nested inside each other. Hence, the largest container disk will be the unit disk O. For simplification, we simultaneously denote by \(r_i\) or \(\mathcal {C}\) the disk with radius \(r_i\) or \(\mathcal {C}\) and its radius. W.l.o.g., we assume \(r_1\ge \ldots \ge r_n\). We pack the disks \(r_1,\dots ,r_n\) by positioning their midpoints inside a container disk such that \(r_i\) lies inside \(\mathcal {C}\) and two disks from \(\{r_1,\dots ,r_n\}\) do not overlap. We call such a positioning a (feasible) disk packing of \(r_1,\dots ,r_n\). Given two sets \(A \subseteq B\subseteq \mathbb {R}^2\), we say that A is a sector of B. Furthermore, we denote the area of a point set A by \(|A|\).

3 A Worst-Case Optimal Algorithm

Theorem 3.1

Every set of disks with total area \({\pi }/{2}\) can be packed into the unit disk O with radius 1. This induces a worst-case optimal packing density of 1/2, i.e., a ratio of 1/2 between the area of the unit disk and the total area to be packed.

The worst case consists of two disks \(D_1,D_2\) with radius 1/2, see Fig. 2a. The total area of these two disks is \({\pi }/{4} + {\pi }/{4} = {\pi }/{2}\), while the smallest disk containing \(D_1,D_2\) has an area of \(\pi \).

In the remainder of Sect. 3, we give a constructive proof for Theorem 3.1. Before we proceed to describe our algorithm in Sect. 3.4, we give some definitions and describe Disk Packing and Ring Packing as two subroutines of our algorithm.

3.1 Preliminaries for the Algorithm

We make use of the following definitions, see Fig. 3. For \(r_{out } \ge r_{in } > 0\) and a container disk \(\mathcal {C}\) such that \(r_{out } \le 2 r_{in }\), we define a ring \(R:=R[r_{out }, r_{in }]\) of \(\mathcal {C}\) as the closure of \(r_{out }\setminus r_{in }\), see Fig. 3. If \(r_{out }>r_{in }>0\), the boundary of R consists of two connected components. The inner boundary is the component that lies closer to m and the outer boundary is the other component. The inner radius and the outer radius of R are the radius of the inner boundary and the radius of outer boundary. Each ring has one of three states \(\{open , closed ,full \}\) indicating whether it is still allowed to pack disks into the ring, the remaining disks are too small to be packed into the ring, and a disk already failed to be packed into the ring, see following section for a formal definition. Initially, each ring is open.

Fig. 3
figure 3

A ring \(R \subset O\) with width w and a disk with its corresponding tangents

Let r be a disk inside a container disk \(\mathcal {C}\). The two tangents of r are the two rays starting in the midpoint of \(\mathcal {C}\) and touching the boundary of r. We say that a disk lies adjacent to \(r_{\text {out}}\) when the disk is touching the boundary of \(r_{\text {out}}\) from the inside of \(r_{\text {out}}\).

3.2 Disk Packing: A Subroutine

Consider a container disk \(\mathcal {C}\), a (possibly empty) set S of already packed disks that overlapFootnote 1 \(\mathcal {C}\), and another disk \(r_i\) to be packed, see Fig. 4.

Fig. 4
figure 4

Disk Packing places disks into a container disk \(\mathcal {C}\) adjacent to the boundary of \(\mathcal {C}\) as long as the radius of the largest disk to be packed is at least as large as a threshold \(\mathcal {T} \le \mathcal {C}/4\), or until \(r_i\) does no longer fit into \(\mathcal {C}\)

We pack \(r_i\) into \(\mathcal {C}\) adjacent to the boundary of \(\mathcal {C}\) as follows: Let \(\alpha \) be the maximal polar angle realized by a midpoint of a disk from S. We choose the midpoint of \(r_i\) realizing a smallest possible polar angle \(\beta \ge \alpha \) such that \(r_i\) touches the outer boundary of \(\mathcal {C}\) from the interior of \(\mathcal {C}\) without overlapping another disk from S, see Fig. 4. If \(r_i\) cannot be packed into \(\mathcal {C}\), we say that \(r_i\) does not fit into \(\mathcal {C}\).

Let \(0 < \mathcal {T} \le {1}/{4}\), called threshold. Disk Packing iteratively packs disks in decreasing order into \(\mathcal {C}\) until the current disk \(r_i\) does not fit into \(\mathcal {C}\) or the radius of \(r_{i}\) is smaller than \(\mathcal {T}\).

3.3 Ring Packing: A Subroutine

Fig. 5
figure 5

Ring Packing packs disks into a ring \(R[r_{out },r_{in }]\), alternating adjacent to the outer and to the inner boundary of R

Consider a ring \(R:= R[r_{out }, r_{in }]\) with inner radius \(r_{in }\) and outer radius \(r_{out }\), a (possibly empty) set S of already packed disks that overlap with R, and another disk \(r_i\) to be packed, see Fig. 5. We pack \(r_i\) into R adjacent to the outer (inner) boundary of R as follows: Let \(\alpha \) be the maximal polar angle realized by a midpoint of a disk from S. We choose the midpoint of \(r_i\) realizing a smallest possible polar angle \(\beta \ge \alpha \) such that \(r_i\) touches the outer (inner) boundary of R from the interior of R without overlapping another disk from S. If \(r_i\) cannot be packed into R, we say that \(r_i\) does not fit into R (adjacent to the outer (inner) boundary).

Ring Packing iteratively packs disks into R, alternating between adjacent to the inner and to the outer boundary. If the current disk \(r_i\) does not fit into R, Ring Packing stops and we declare R to be full. If \(r_{i-1}\) and \(r_{i}\) could past each other, i.e., the sum of the diameters of \(r_{i-1}\) and \(r_i\) are smaller than the width of R, Ring Packing stops and we declare R to be closed.

Fig. 6
figure 6

An overview of our algorithm for packing disks into the unit disk with optimal worst-case density. The algorithm works in five phases where the fifth phase is a decision routine

3.4 Description of the Algorithm

Our algorithm creates rings. A ring only exists after it is created. We stop packing at any point in time when all disks are packed. Initially, we set \(\mathcal {T} \leftarrow {1}/{4}\). Our algorithm works in five phases during which we permanently update the smallest inner radius \(r_{\min }\) of a created ring:

  • Phase 1—Recursion Let \(r_i\) be the largest disk not yet packed. If \(r_i,r_{i+1} \ge 0.495\mathcal {C}\), apply Disk Packing to \(r_{i},r_{i+1}\), update \(\mathcal {C}\) as the largest disk that fits into \(\mathcal {C}\) after \(r_i,r_{i+1}\) being packed into \(\mathcal {C}\), \(\mathcal {T}\) as \({\mathcal {C}}/{4}\), and \(r_{\min }\) as \(\mathcal {T}\). Then, recurse on \(\mathcal {C}\), see Fig. 7.

  • Phase 2—Disk Packing Let r be the radius of \(\mathcal {C}\). If the midpoint m of \(\mathcal {C}\) lies inside a packed disk \(r_j\), let d be the minimal distance of m to the boundary of \(r_j\), see Fig. 7bFootnote 2. Otherwise, we set \(d = 0\). We apply Disk Packing to the container disk \(\mathcal {C}\) with the threshold \(\mathcal {T} \leftarrow ({r-d})/{4}\).

  • Phase 3—Ring Packing We apply Ring Packing to the ring \(R:= R[r_{out }, r_{in }]\), determined as follows: Let \(r_i\) be the largest disk not yet packed. If there is no open ring inside \(\mathcal {C}\), we create a new open ring \(R[r_{out }, r_{in }] \leftarrow R[r_{\min }, r_{\min } - 2r_i]\) and update \(r_{\min } := r_{\min } - 2r_i\). Else, let \(R[r_{out }, r_{in }]\) be the open ring with the largest inner radius \(r_{in }\).

  • Phase 4—Managing Rings Let \(R[r_{out }, r_{in }]\) be the ring filled in Phase 3. Let \(r_i\) be the largest disk not yet packed. If \(r_i\) and \(r_{i+1}\) can pass one another inside \(R[r_{out }, r_{in }]\), i.e., if \(2r_i + 2r_{i+1} \le r_{out } - r_{in }\), we create two new open rings \(R[r_{out }, r_{out } - 2r_{i}]\) and \(R[r_{out } - 2r_{i}, r_{in }]\).

  • Phase 5—Continue If there is an open ring, we go to Phase 3. Otherwise, we set \(\mathcal {C}\) as the concentric disk with radius \(r_{\min }\) and go to Phase 2.

Fig. 7
figure 7

a If \(r_1,r_{2} \ge 0.495\mathcal {C}\), Disk Packing packs \(r_1,r_{2}\) into \(\mathcal {C}\). We update the current container disk \(\mathcal {C}\) as the largest disk that fits into \(\mathcal {C}\) and recurse on \(\mathcal {C}\) with \(r_{3}, \dots , r_{n}\). b Determining the threshold \(\mathcal {T}\) for disks packed by Disk Packing. c Different sequences of rings packed by different applications of Ring Packing and the corresponding sectors. The minimal rings into which the orange and red disks are packed are full. The minimal ring into which the turquoise disks are packed is open. The uncolored, crossed-out circles illustrate that the corresponding disk did not fit into the current ring, causing it to be declared full

4 Analysis of the Algorithm

We start by analyzing the recursion. After that, we provide the remaining analysis of the algorithm.

4.1 Analysis of Phase 1—The Recursion

If \(r_2 \ge 0.495\), Lemma 4.1 allows us to recurse on \(\mathcal {C}\) as required by Phase 1.

Lemma 4.1

If \(r_i,r_{i+1} \ge 0.495\mathcal {C}\), the area of the largest container disk that fits into \(\mathcal {C}\) after packing \(r_i,r_{i+1}\) is at least twice the total area of \(r_{i+2},\dots ,r_n\), see Fig. 8.

Proof

W.l.o.g., assume that the original container disk is the unit disk and \(i = 1\). Lemma 4.2 implies \(r_1+r_2 \le 1\), which means \(r_1,r_2 \le 0.505\), because \(r_2 \ge 0.495\). Furthermore, \(r_1 + r_2\le 1\) implies that we can move (w.l.o.g.) \(r_1,r_2\) into two disks \(D_1,D_2\) with radius 0.505, touching the boundary of \(\mathcal {C}\) and with their midpoints \(m_1,m_2\) on the horizontal diameter of \(\mathcal {C}\), see Fig. 8. This decreases the area of the largest disk that still fits into \(\mathcal {C}\).

Fig. 8
figure 8

If \(r_2 \ge 0.495\), we can pack \(r_1,r_2\) into container disks \(D_1,D_2\) and recurse on a third disk \(\overline{c}\) whose area is twice the total area of the remaining disks

Consider the disk \(\overline{\mathcal C}=1/5\) lying adjacent to \(\mathcal {C}\) and with its midpoint \(\overline{m}\) on the vertical diameter \(\ell _1\) of \(\mathcal {C}\). Pythagoras’ Theorem implies that \(|m_1\overline{m}|=\sqrt{(1-0.505)^2+(1-{1}/{5})^2}\approx 0.94075>0.505+1/5\). Finally, we observe that the area of \(\overline{\mathcal {C}}\) is \(\pi /25=0.04\pi \) which is larger than \(0.06252 > 2({\pi }/{2} - 2\cdot 0.495^{2}\pi )\). This means that the area of \(\overline{\mathcal {C}}\) is twice the total area of the remaining disks \(r_3,r_4,r_5,\dots \), concluding the proof.\(\square \)

A technical key ingredient in the proof of Lemma 4.1 is the following lemma:

Lemma 4.2

The area of two disks with radii \(d_1,d_2\) is at least \({\pi }(d_1+d_2)^2/2\).

Proof

W.l.o.g., we assume \(d_1+d_2 = 2\). The function \((1-x)^2+(1+x)^2=2+2x^2\) for \(x\in \mathbb {R}\) attains a minimum of 2 at \(x=0\), so \(d_1^2+d_2^2\) for constant \(d_1+d_2\) attains its minimum at \(d_1=d_2\), for a minimum value of \(2d_1^2=(d_1+d_2)^2/2\).\(\square \)

This allows us to assume \(r_2 < 0.495 \mathcal {C}\) during the following analysis.

4.2 Outline of the Remaining Analysis

Once our algorithm stops making recursive calls, i.e., stops applying Phase 1, Phase 1 is never applied again. W.l.o.g., let \(r_1,\dots ,r_n\) be the remaining disks and O the container disk after the final recursion call.

The main idea of the remaining analysis is the following: A sector is a subset of O. We cover the original container disk O by a set of sectors. Let \(r_i\) be a disk packed by Disk Packing into the current container disk \(\mathcal {C}\). We define the cone induced by \(r_i\) as the sector of \(\mathcal {C}\) between the two tangents of \(r_i\). We say that \(\mathcal {C}\) is the radius of the cone.

The potential A of a disk r is defined as its area. Atomic potentials of r are numbers \(A_1,\dots ,A_k \ge 0\) that sum up to A. During the analysis we frequently will assign an atomic potential \(A_i\) of a disk r to a sector S; we say that r charges S by the atomic potential \(A_i\) and we say that \(A_i\) is moved to S. Thus, the sum of the atomic potentials charged by a disk r will be at most the area of the disk r. Let \(A_1,\dots ,A_k\) be the sum of the atomic potentials moved to the sectors \(S_1,\dots , S_k \subset O\). The resulting potential of a sector \(S \subseteq O\) is the sum of the proportionate atomic potentials from \(S_1,\dots ,S_k\), i.e., the sum of all \({|S_i \cap S|}/{|S_i|} A_i\) for \(i = 1,\dots ,k\). The (virtual packing) density \(\rho (S)\) of the sector S is defined as the ratio between the potential of S and the area of S. If a sector achieves a density of 1/2, we say that the sector is saturated, otherwise its unsaturated.

Our approach for proving Theorem 3.1 is by induction. In particular, we assume that \(O \setminus \mathcal {C}\) is saturated; we show that each disk \(r_i\) can be packed by our algorithm, as long as \(\mathcal C\) is unsaturated implying that each set of disks with total area of at most \({|O|}/2\) is packed. For a simplification, we assume for the remainder of the paper that \(\mathcal {C}\) is the unit disk, i.e., \(\mathcal {C} = 1\). We consider the configuration achieved after termination.

Observation 4.3

If there is a ring that is neither full nor closed, all disks are packed.

Fig. 9
figure 9

Ensuring a density of at least 0.5 for a ring R needs a density of \(\rho \approx 0.5606\) for \(R\setminus C\)

Thus, we assume that all rings computed by our algorithm are full or closed. In order to avoid that Disk Packing stops due to a disk r not fitting, we consider the cone being not filled by a run of Disk Packing, see Fig. 9. The worst case for this scenario is \(r =1/4\). In order to ensure that even in this case the entire container \(\mathcal {C}\) is saturated, we guarantee that \(\mathcal {C}\) has a density of

$$\begin{aligned} \rho := \frac{180^{\circ }}{360^{\circ } - 2 \arcsin {((1/4)/(3/4))}}< 0.56065. \end{aligned}$$

4.3 Analysis of Disk Packing

The following lemma is the key ingredient for the analysis of Disk Packing.

Lemma 4.4

Let \(r \in [0.2019 , {1}/{2}]\) be a disk lying adjacent to \(\mathcal {C}\). The cone C induced by r has a density larger than \(\rho \) if \(r \in [{1}/{4}, 0.495]\) and least 1/2 if \(r \in [0.2019, {1}/{2}]\), see Fig. 10.

Fig. 10
figure 10

A disk \(r \in [{1}/{4}, 0.495]\) lying adjacent to \(\mathcal {C}\) induces a cone with density of at least 0.56127 if \(r \in [1/4,0.495]\) and of least 1/2 if \(r \in [{1}/{4},{1}/{2}]\)

Proof

Let

$$\begin{aligned} f(r) := \frac{\pi r^2}{\displaystyle \arcsin \frac{r}{1-r}} \end{aligned}$$

for \({1}/{4} \le r \le {1}/{2}\). Thus we have

$$\begin{aligned} f'(r) = \frac{2 \pi r}{\displaystyle \arcsin \frac{r}{1-r}} - \frac{\pi r^2 \displaystyle \biggl ( \frac{1}{1-r} + \frac{r}{( 1-r)^2}\biggr )}{\displaystyle \arcsin \biggl ( \frac{r}{1-r} \biggr )^{\!2}\sqrt{1 -\displaystyle \frac{r^2}{( 1-r)^2}}}. \end{aligned}$$

Solving \(f'(r) = 0\) yields \(r \approx 0.39464\). Furthermore, we have \(f({1}/{4}) \approx 0.57776\), \(f(0.39464) = 0.68902\), \(f({1}/{2}) = 0.5\), and \(f(0.495) \approx 0.56127\). Thus, f restricted to [1/4, 0.495] achieves at 0.495 its global minimum 0.56127. A similar approach implies that f restricted to [0.2019, 1/2] attains its global minimum 1/2 at 1/2.\(\square \)

The following lemma proves that all disks \(r_i \ge {\mathcal {C}}/{4}\) that are in line to be packed into a container disk \(\mathcal {C}\) can indeed be packed into \(\mathcal {C}\).

Lemma 4.5

Let \(C \subset \mathcal {C}\) be an empty cone with midpoint m and radius \(\mathcal {C}\), such that \(\mathcal {C} \setminus C\) is saturated. All disks \(r_i \ge {\mathcal {C}}/{4}\) that are in line to be packed into C by Disk Packing do fit into C.

Proof

Assume that there is a largest disk \(r_k \ge {1}/{4}\) not packed adjacent to \(\mathcal {C}\). Each disk \(r_i\) from \(r_1,\dots ,r_{k-1}\) charges the cone induced by \(r_i\) by its entire area \(\pi r_i^2\). Lemma 4.4 implies that each cone has a density of at least 1/2. As \(r_k\) does not fit between \(r_1,r_{k-1}\) and adjacent to \(\mathcal {C}\), Lemma 4.4 implies that the sector of \(\mathcal {C}\) that is not covered by a cone induced by \(r_1,\dots ,r_{k-1}\) has a area smaller than twice the area of \(r_k\). The sector covered by the union of the cones is saturated, because each cone is saturated. By assumption, \(\mathcal {C}\setminus C\) is saturated. This implies that the total area of \(r_1,\dots ,r_k\), is larger than half of the area of C. This implies that the total input area of is larger than twice the area of the original container. This is a contradiction, concluding the proof.\(\square \)

Corollary 4.6

If \(r_n \ge {1}/{4} \), our algorithm packs all input disks.

Thus, we assume w.l.o.g. \(r_n <{1}/{4}\), implying that our algorithm creates rings.

4.4 Analysis of Ring Packing

For the following definition, see Fig. 11b.

Definition 4.7

A zipper Z is a (maximal) sequence \(\langle r_k,\dots ,r_{\ell } \rangle \) of disks that are packed into a ring R during an application of Ring Packing. The length of Z is defined as \(\ell - k + 1\).

Consider a zipper \(\langle r_k,\dots ,r_{\ell } \rangle \) packed into a ring R. For a simplified presentation, we assume in Sect. 4.4 that the lower tangent of \(r_k\) realizes a polar angle of zero, see Fig. 11.

We refine the potential assignments of zippers as follows. Let \(Z = \langle r_k,\dots ,r_{\ell } \rangle \) be an arbitrary zipper and R the ring into which Z is packed. In order to subdivide R into sectors corresponding to specific parts of the zipper, we consider for each disk \(r_i\) the center ray, which is the ray starting from m and passing the midpoint of \(r_i\). Let \(t_1, t_2\) be two rays starting in m. We say that \(t_1\) lies above \(t_2\) when the polar angle realized by \(t_1\) is at least as large as the polar angle realized by \(t_2\). \(t_1\) is the minimum (maximum) of \(t_1,t_2\) if \(t_1\) does not lie above (below) \(t_2\). Furthermore, the upper tangent (lower tangent) of a disk \(r_i\) is the maximal (minimal) tangent of \(r_i\).

Fig. 11
figure 11

A maximal sequence of disks that are packed into a ring during an application of Disk Packing. The corresponding sectors are illustrated in light gray. a A zipper of length one and the corresponding sector. b A zipper of length 14, the resulting directed adjacency graph (black/red), and the path (red) leading from the largest disk to the smallest disk. The first seven edges of P are diagonal and the remaining edges of P are vertical. c The zipper and the sector disassembled into smaller sectors corresponding to the edges of the red path

If the zipper Z consists of one disk \(r_k\), the sector S of Z is that part of R between the two tangents to \(r_k\) and S is charged by the entire area of \(r_k\).

Lemma 4.8

The density of the sector S of a zipper of length one is at least 0.77036.

Proof

As the zipper consists of only one disk \(r_k\), \(r_k\) touches both the inner and the outer boundary of R. Hence, the density of S is not increased by assuming that the inner radius of R is equal to the diameter of \(r_k\), see Fig. 11. W.l.o.g., we assume \(r_k = 1\) implying \(|r_k| = \pi \). Furthermore, the angle of the cone induced by \(r_k\) is equal to \(2 \arcsin ( 1/3)\). The ring induced by \(r_k\) has an area of \(4^{2}\pi - 2^{2}\pi = 12\pi \). Thus

$$|R_k| = \frac{2 \arcsin ( 1/3)}{2 \pi }12 \pi = 12 \arcsin \frac{1}{3}.$$

Hence, the density of \(R_k\) is at least \(\pi /(12 \arcsin (1/3))\approx 0.77036\).\(\square \)

Assume the zipper \(\langle r_k,\dots ,r_\ell \rangle \) consists of at least two disks. We define the adjacency graph \(G=(\{r_k,\dots ,r_{\ell }\},E)\) as a directed graph as follows: There is an edge \((r_j,r_i)\) if (1) \(r_i \le r_j\) and (2) \(r_i, r_j\) are touching each other, see Fig. 11b.

As Ring Packing packs each disk \(r_i\) with midpoint \(m_i\) such that \(m_i\) realizes a smallest possible polar angle, there is a path \(e_k,\dots ,e_{\ell -1} =: P\) connecting \(r_k\) to \(r_{\ell }\) in the adjacency graph G, see Fig. 11c. \(e_k\) is the start edge of P and \(e_{\ell -1}\) is the end edge of P. The remaining edges of P that are neither the start nor the end edge of G, are middle edges of P. Furthermore, an edge \((r_j,r_{m}) = e_i \in P\) is diagonal if \(r_j,r_{m}\) are touching different boundary components of R. Otherwise, we call \(e_i\) vertical.

We classify the edges \(\{e_i\}\) of the path P by eight different types (T1)–(T8). In particular, we distinguish whether \(e_i\) is a start, middle, or an end edge and whether \(e_i\) is diagonal or vertical. For each potential type of \(e_i\) we give an individual a definition of a sector \(A_i\) belonging to \(e_i\) and the potential assigned to \(A_i\), called the potential of \(e_i\). In particular, let \((r_j,r_{m})=e_i\). We define \(t_{lower }\) as the minimum of the lower tangents of \(r_j,r_{m}\) and \(t_{upper }\) the maximum of the upper tangents of \(r_j,r_{m}\), see Fig. 12a. Furthermore, let \(t_1,t_2\) be the center rays of \(r_j,r_{m}\), such that \(t_1\) does not lie above \(t_2\).

Fig. 12
figure 12

The eight possible configurations of an edge \(e_i\) (red) of P, the corresponding sectors (light gray), and the potentials (dark gray) by which the sectors are charged

For the case that \(e_i = (r_j,r_{m})\) is a vertical edge, we consider additionally the disk \(r_{p}\) that is packed into R after \(r_j\) and before \(r_{m}\), see Fig. 12f. Let \(t_3\) be the maximum of \(t_2\) and the upper tangent of \(r_{p}\), see Fig. 12.

(T1):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal start edge, the sector of \(e_i\) is that part of R that lies between \(t_{lower }\) and \(t_2\), see Fig. 12b. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire area of \(r_j\) and the half of the area of \(r_{m}\).

(T2):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal middle edge, the sector of \(e_i\) is that part of R that lies between \(t_1\) and \(t_2\), see Fig. 12c. The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and the half of the area of \(r_m\).

(T3):

The sector of \(e_i\): If \(e_i = (r_j,r_{m})\) is a diagonal end edge, the sector of \(e_i\) consists of two parts, see Fig. 12d: (1) The first is the part of R that lies between the upper tangent and the center ray of \(r_j\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is that part of \(R_m\) that lies between the upper tangent of \(r_m\) and the minimum of \(t_1\) and the lower tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and by the entire area of \(r_m\).

(T4):

The sector of \(e_i\): If \(e_i =(r_j,r_{m})\) is a diagonal start and end edge, see Fig. 12e, the sector of \(e_i\) is the sector of \(e_i\) is the union of two sectors: (1) The first is the part of R that lies between the lower and the upper tangent of \(r_j\). (2) The second is that part of \(R_m\) that lies between the lower and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\) and \(r_m\).

(T5):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical start edge, the sector of \(e_i\) is that part of R that lies between the minimum of the lower tangents of \(r_j,r_p\) and the centre ray of \(r_m\), see Fig. 12g. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\) and \(r_p\) and the half of the area of \(r_m\).

(T6):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical middle edge, the sector of \(e_i\) is that part of R that lies between the center rays of \(r_j,r_m\), see Fig. 12h. The potential of \(e_i\): The sector of \(e_i\) is charged by the entire area of \(r_p\) and by the halves of the areas of \(r_j\) and \(r_m\).

(T7):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical end edge, the sector of \(e_i\) consists of two parts, see Fig. 12i: (1) The first is that part of R that lies between the center ray of \(r_j\) and the upper tangent of \(r_p\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is the part of \(R_m\) that lies between the center ray of \(r_j\) and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the half of the area of \(r_j\) and the entire areas of \(r_p\) and \(r_m\).

(T8):

The sector of \(e_i\): If \(e_i = (r_j,r_m)\) is a vertical start and end edge, the sector of \(e_i\) is consists of two parts, see Fig. 12j: (1) The first is that part of R that lies between the minimum of the lower tangents of \(r_j,r_p\) and the maximum of the upper tangents \(r_j,r_p\). (2) Let \(R_m\) be the smallest ring enclosing \(r_m\). The second part of the sector is that part of \(R_m\) that lies between the lower and the upper tangent of \(r_m\). The potential of \(e_i\): The sector of \(e_i\) is charged by the entire areas of \(r_j\), \(r_p\), and \(r_m\).

For simplicity, we also call the density of the sector of an edge \(e_i\in P\) the density of \(e_i\). The sector of a zipper is the union of the sectors of the edges of P.

Lemma 4.9

Let \(Z = \langle r_k,\dots ,r_{\ell } \rangle \) be a zipper of length at least two and P a path in the adjacency graph of Z connecting \(r_k\) with \(r_{\ell }\). Each edge \(e_i \in P\) has a density of at least \(\rho \).

Proof

In order to prove the lemma, we apply interval arithmetic. In interval arithmetic, mathematical operations such as addition, multiplication or computing the sine are performed on intervals instead of real numbers. Operations on intervals are defined based on their real counterparts as follows. For two intervals \(A=[a_1,b_1]\), \(B=[a_2,b_2]\) and some binary operation \(\circ \), the result \(A\circ B\) is defined as

$$\begin{aligned} A\circ B :=\left[ \min \limits _{\begin{array}{c} x_1 \in A\\ x_2 \in B \end{array}}x_1 \circ x_2,\, \max \limits _{\begin{array}{c} x_1 \in A\\ x_2 \in B \end{array}}x_1 \circ x_2\right] . \end{aligned}$$

In other words, the result of an operation is the smallest interval containing all values \(x \circ y\) for \(x \in A, y \in B\). Unary operations are defined in a similar manner. If the input interval(s) contain values for which the corresponding operation on real numbers is undefined, the result is undefined.

In order to use interval arithmetic for our proof, we consider the cases (T1)–(T8) (as shown in Fig. 12) separately. For each of these cases, we consider the following three or four variables. The first variable is \(\lambda \), the inner radius of the ring; we assume the outer radius to be 1. Additionally, we have two or three variables \(r_1 \ge r_2 \ge r_3\) corresponding to the radii of the disks involved in the case. For each of the cases, it is straightforward to implement an algorithm that computes the density of any configuration (T1)–(T8), given some real values for \(\lambda ,r_1,\ldots ,r_3\). Such an algorithm needs to perform basic arithmetic operations as well as square root and inverse sine computations. Instead of implementing such an algorithm using real numbers, we can also implement it using interval arithmetic. As input, instead of concrete real values, we are given intervals \(I_{\lambda },I_1,I_2,I_3\) for \(\lambda \) and \(r_1,r_2,r_3\). As output, we compute an interval \(I_d\) for the density of any given configuration from (T1)–(T8). We know that \(I_d\) contains all possible density values that an implementation using real numbers can produce given inputs from \(I_{\lambda },I_1,I_2,I_3\). Therefore, if the lower bound of \(I_d\) is above a lower bound of \(b_d:=0.5642\), we know that the density is at least \(b_d\) for all possible values these intervals.

Furthermore, we can bound our variables as follows. We only have to consider the case \({1}/{2} \le \lambda < 1\). For any given value of \(\lambda \), we know that \(r_1 \le ({1-\lambda })/{2}\), because otherwise, \(r_1\) would not fit into the ring. Moreover, we can lower bound \(r_2\) by \(({1-\lambda -2r_1})/{2}\), because otherwise, \(r_2\) would be the first disk in a new ring; similar statements hold for \(r_3\) in the three-disk cases. This gives us lower and upper bounds for all involved variables. By subdividing the ranges for \(\lambda ,r_1,r_2,r_3\) into sufficiently small intervals, we subdivide the space spanned by \(\lambda ,r_1,r_2,r_3\) into finitely many hypercuboids; these hypercuboids cover the entire space.

We can feed each hypercuboid into the interval arithmetic implementation of each of the configurations (T1)–(T8). If, for a hypercuboid, the result is a density interval with lower bound of at least \(b_d\), we do not have to consider that hypercuboid anymore. Implementing this idea yields an automatic proverFootnote 3, which we can use to prove that the density is at least \(b_d\) for all hypercuboids with \(\lambda \le 0.99\).

The number of hypercuboids that we have to consider in this process is large; therefore, we implemented the approach outlined above using a CUDA-capable GPU in order to perform the computations for individual hypercuboids in a massively parallel fashion. Our implementation of interval arithmetic handles rounding errors arising from the use of limited-precision floating-point arithmetic by using appropriate rounding modes (where available) or error bounds guaranteed by the underlying platform. In this way, we can ensure that the interval resulting from any operation contains all possible results of the corresponding operation on real numbers given values from the input intervals. This ensures soundness of our results in the presence of rounding errors.

Let \(R := R[r_{out }, r_{in }]\) be the ring into which Z is packed. Our prover shows that the density of \(e_i\) is 0.5642, if the ratio of R is at most 0.99. Hence, we assume w.l.o.g. that the ratio of the inner and the outer radius of R is at least 0.99. Furthermore, we assume w.l.o.g. that R has a width of 0.01.

Before we lower bound the density of \(e_i\), we need to define some notations. The midpoint of a ring R is the midpoint of the disk induced by the outer boundary. Let q be a point in R and \(\ell _q\) the ray starting from m and emanating into the direction of q, see Fig. 13. Let \(\overline{q}\) be the intersection point of \(\ell _q\) with the outer boundary of R. Given a ray \(\ell \), called reference axis, the first coordinate of q is the distance between q and \(\overline{q}\). The second coordinate of q is the length of the curve \(\beta \) on the outer boundary between \(\ell \) and \(\ell _q\).

We denote the sector of \(e_i\) by B. Let \(r_j,r_m\) be chosen arbitrarily but fixed. We consider both, the packing of the edge \((r_j,r_m)\) into a ring \(\overline{R} := R[1,0.99]\) and into the ring R. For a clearer presentation, we denote by \(\overline{e}_i=(\overline{r}_j,\overline{r}_m)\) the edge packed into \(\overline{R}\) and by \((r_j,r_m)\) the edge packed into R. Furthermore, let \(\overline{B}\) be the sector of \(\overline{e}_i\). We construct from \(\overline{B} \subset R[1,0.99]\) a sector \(A \subset R\) such that A is a superset of the sector B of \(e_i\). We guarantee \({|A|}/{|B|} \le 1.00508\), implying that B has a density of at least \({0.5642}/{1.00508}> 0.56134 > \rho \), because |B| has a density of at least 0.5642.

Fig. 13
figure 13

Regarding the reference axis \(\ell \), the coordinates of the point q are the length of \(\beta \) and the distance between q and \(\overline{q}\)

Let \(\overline{e}_i\) be of type (T1), see Fig. 14a.

Fig. 14
figure 14

Mapping the midpoint of \(r_j\) onto a point in R having the same coordinates as the midpoint of \(r_j\)

W.l.o.g., we assume that \(r_m\) touches the inner boundary of \(\overline{R}\). Let \(\ell \) be the ray shooting from the midpoint of \(\overline{R}\) into the direction of \(r_m\). We scale and place \(R,r_j,r_m\) so that \(\ell \cap \overline{R}\) is equal to \(\ell \cap R\), see Fig. 14a. Thus, both R and \(\overline{R}\) have the width 1/100. We use \(\ell \) as reference axis for both rings R and \(\overline{R}\). We map each point from the sector of \(\overline{e}_i\) onto the point in R having the same coordinates, see Fig. 14b. Let \(\overline{m}_m, \overline{m}_j\) be the midpoints of \(\overline{r}_m,\overline{r}_j\). By construction, \(\overline{m}_m\) is mapped onto itself. Furthermore, \(\overline{m}_j\) is mapped onto a point that lies farther away from \(\overline{m}_m\) as \(\overline{m}_j\) does, because \(\overline{m}_j\) lies closer to the outer boundary as \(\overline{m}_m\) in the initial configuration.

Let A be the union of all points from R onto which points from the sector of \(e_i\) are mapped, see the blue sector in Fig. 14c. The area \(|A|\) of A achieves its supremum for \(r_{in }\) approaching 1. Thus, we upper bound \(|A| \le {\beta }/{100}\), where \(\beta \) is the length of the part of the outer boundary of \(\overline{R}\) inside the sector of \(e_i\). As the outer radius of \(\overline{R}\) is 1, \(\beta \) is also the angle induced by the sector of \(e_i\), see Fig. 14a. Furthermore, the area \(|B|\) of the unscaled sector B of \(e_i\) is equal to

$$\begin{aligned} \frac{\beta }{2 \pi } \cdot \pi \cdot \biggl ( 1 - \biggl ( 1 - \frac{1}{100} \biggr )^{\!2}\biggr ). \end{aligned}$$

Thus,

$$\begin{aligned} \frac{|A|}{|B|} \le \frac{1}{1 -1/{200}} < 1.00503. \end{aligned}$$

The same approach as used for edges of type (T1) applies to edges of type (T2).

Fig. 15
figure 15

The coordinates of q are the distance between q and \(\overline{q}\) and the sum of the lengths of the parts of \(\alpha _1,\alpha _2\) that lie between \(\ell \) and \(\ell _q\)

In order to analyze edges of type (T3) and (T4), we need a refined approach. We maintain the first coordinate of q as the distance between q and \(\overline{q}\) and refine the second coordinate as follows: W.l.o.g., let \(\overline{r}_m\) be the disk touching the inner boundary of \(\overline{R}\). Let \(\ell \) be the ray shooting from the midpoint of \(\overline{R}\) into the direction of \(\overline{m}_m\), see Fig. 15. Let \(C_1, C_2\) be the circles having the same midpoint as \(\overline{R}\) such that \(r_m,r_j\) touch \(C_1,C_2\) from the interior. Let \(\alpha _1 \subset C_1,\alpha _2 \subset C_2\) be the circular arcs lying on the boundary of \(\overline{B}\). The second coordinate of q is the sum of the lengths of the parts of \(\alpha _1, \alpha _2\) between \(\ell _q\) and \(\ell \), see the fat red curves in Fig. 15a.

Using the refined definition of coordinates, we apply the approach used for edges of type (T1) and (T2) to that part of \(\overline{B}\) that lies below \(\ell \). Furthermore, we apply the symmetric approach reflected at \(\ell \) to that part of \(\overline{B}\) that lies above \(\ell \). The same argument as used for edges of type (T1) and (T2) implies that the distance between \(\overline{m}_j, \overline{m}_m\) is not decreased.

In order to upper bound the area \(|A|\) of A, we partition \(\overline{B}\) into three sectors \(S_1,S_2,S_3\), see Fig. 15b. \(S_1\) is that part of \(\overline{B}\) which lies above \(\ell \). \(S_2\) is that part of \(\overline{B}\) which lies above the upper tangent to \(r_m\) and below \(\ell \). \(S_3\) is \(\overline{B}\setminus S_1\cup S_3\). We consider the width d of the pocket left by \(\overline{B}\), see Fig. 15b. Furthermore, let \(A_1,A_2,A_3\) be the images of \(S_1,S_2,S_3\) under mapping points from \(\overline{R}\) onto points from R. The areas \(|A_1|,|A_2|,|A_3|\) of \(A_1,A_2,A_3\) achieve their suprema for \(r_{in }\) approaching 1. In this case the considered part of \(\overline{R}\) deforms to a rectangle whose width is equal to the width of R. Hence, we upper bound \(|A_1|\) by

$$\frac{\alpha _1}{2 \pi }2 \pi \frac{1-d}{100} = \alpha _1\frac{1-d}{100},$$

where \(\alpha _1\) is the angle induced by \(S_1\), see Fig. 15b. Furthermore, we have

$$\begin{aligned} |S_1|&=\frac{\alpha _1}{2 \pi }\pi \biggl ( (1-d)^2 - \biggl ( (1-d) - \frac{1}{100} \biggr )^{\!2} \biggr )\\&=\frac{\alpha _1}{2} \biggl ( (1-d)^2 - (1-d)^2 + 2\frac{1-d}{100}- \frac{1}{100^2} \biggr )\\&=\alpha _1 \biggl ( \frac{1 - d}{100} - \frac{1}{2 \cdot 100^2} \biggr ). \end{aligned}$$

Thus, we upper bound

$$\begin{aligned} \frac{|A_1|}{|S_1|}&\le \frac{\alpha _1\displaystyle \frac{1-d}{100}}{\alpha _1\displaystyle \frac{1-d}{100} \biggl ( 1 - \frac{1}{200 (1-d)} \biggr )} \\ {}&=\frac{1}{1 -\displaystyle \frac{1}{200(1-d)}}{\mathop {\le }\limits ^{d \le 0.01}}\frac{1}{\displaystyle 1 - \frac{1}{200 \cdot 0.99}}\le 1.00508. \end{aligned}$$

Using the same approach as used to upper bound \({|A_1|}/{|S_1|}\), yields \({|A_2|}/{|S_2|} < 1.00508\). Using the same approach as used for edges of type (T1), we obtain \({|A_3|}/{|S_3|} \le 1.00508\). This implies \({|A|}/{|B|} \le 1.00508\) because \(A = A_1 \cup A_2 \cup A_3\) and \(B = S_1 \cup S_2 \cup S_3\).

If \(e_i = (r_j,r_m)\) of type (T5), we assume w.l.o.g. that the disk \(r_p\) packed between \(r_j\) and \(r_m\) lies adjacent to the inner boundary of R. Otherwise, the area of the sector of \(e_i\) is monotonically decreasing in the ratio of R implying that the sector of \(e_i\) has a density of at least 0.5642. Let \(m_p\) be the midpoint of \(r_p\) and \(\ell \) the ray shooting from the midpoint of R into the direction of the \(m_p\). We apply the same approach as used edges of type (T1) to that part of B which lies above \(\ell \) and the symmetric approach to that part of B which lies below \(\ell \). This yields a lower bound of 0.56134 for the density of \(e_i\). If \(e_i\) is of type (T6), applying the same approach as used for edges of type (T5) yields 0.56134 as a lower bound for the density of \(e_i\). If \(e_i\) is of type (T7) or (T8), applying the same approach as used for edges of type (T3) yields that the density of \(e_i\) is lower-bounded by 0.56134. This concludes the proof.\(\square \)

The proof of Lemma 4.9 is the only computer-assisted proof. All remaining proofs are analytic. Combining Lemmas 4.8 and 4.9 yields the following.

Corollary 4.10

Sectors of zippers have a density of at least \(\rho = 0.56064\ldots \)

From Corollary 4.10 we obtain the following:

Corollary 4.11

Let S be that part of a minimal ring which is left after removing its gap and the sectors filled by Disk Packing. Then S has a density of at least \(\rho \).

Ring Packing stops when the sum of the diameters of the current disk \(r_i\) and the disk packed last \(r_{i-1}\) is smaller than the width w of the current ring, i.e., if \(2r_{i-1} + 2r_i < w\). If \(2r_{i-1} + 2r_i < w\), Phase 5 partitions the current ring into two new open rings with widths \(2r_i, w-2r_i\). Hence, the sectors of zippers packed by Ring Packing become firmly interlocked without leaving any space between two zippers, see Fig. 16.

Fig. 16
figure 16

The sectors of rings packed by Ring Packing become firmly interlocked without leaving any space between two sectors. The minimal rings into which the orange and the red zippers are packed are full. The minimal ring into which the turquoise zipper is packed is open

The only sectors that we need to care about is the space (below defined as gaps) that is left by Ring Packing due to the second break condition, i.e., the current disk does not fit into the current ring, see the black sectors in Figs. 16 and 17.

In order to analyze the gaps left by Ring Packing, we first need to observe for which rings we need to consider gaps. In particular, we have two break conditions for Ring Packing:

  • The current disk \(r_i\) does not fit into the current ring R, causing us to close the ring and disregard it for the remainder of the algorithm.

  • The current and the last disk \(r_{i-1}\) packed into R can pass one another, resulting in R to be partitioned into several rings with smaller widths. Thus, we obtain that two computed rings \(R_1,R_2\) either do not overlap or \(R_1\) lies inside \(R_2\). This motivates the following definition.

Definition 4.12

Consider the set of all rings \(R_1,\dots ,R_k\) computed by our algorithm. A ring \(R_i\) is maximal if there is no ring \(R_j\) with \(R_i\subset R_j\). A ring \(R_i\) is minimal if there is no ring \(R_j\) with \(R_i\supset R_j\).

Each ring is partitioned into minimal rings. Thus, we define gaps only for minimal rings, see Fig. 17 and Definition 4.13.

Fig. 17
figure 17

The lid, the gap (striped white-gray), and a unit sector of a ring R

Definition 4.13

Let \(Z = \langle \dots , r_{\ell -1}, r_{\ell } \rangle \) be a zipper of length at least 2 inserted into a minimal ring R. The lid h of R is the ray above the upper tangent u of \(r_{\ell }\) such that h realizes a maximal polar angle while \(h\cap R\) does not intersect an already packed disk \(r_f\) with \(f\le \ell -1\), see Fig. 17. The gap of R is the part of R between the upper tangent u of \(r_{\ell -1}\) and the lid of R which is not covered by sectors of Z, see the white-gray striped sectors in Fig. 17. A unit sector of R is a sector of R that lies between the two tangents of a disk touching the inner and the outer boundary of R, see Fig. 17. The unit area \(U_R\) of R is the area of a unit sector of R.

The lid of a gap lies either inside a cone induced by a disk packed by Disk Packing, see Fig. 17a, or inside the sector of a zipper packed by Ring Packing, see Fig. 17b. This leads to the following observation.

Observation 4.14

Each minimal ring R is covered by the union of cones induced by disks packed by Disk Packing into R, sectors of zippers packed by Ring Packing into R, and the gap of R.

Next, we upper bound the area of the gap of minimal rings.

Lemma 4.15

The gap of a minimal ring R has a area of at most \(1.07024U_R\).

Fig. 18
figure 18

Simplifying assumptions that do not increase the density

Proof

As we want to upper bound the area of the gap w.r.t. the unit area \(U_R\) of R, w.l.o.g. we make the following assumptions (A1)–(A4), see Fig. 18:

  1. (A1)

    The largest disk \(\lambda \) inside R touching h from below, the upper tangent of \(r_{\ell }\) from above, and the inner boundary of R, such that \(\lambda \) does not overlap with any other disks from below, has the same radius as \(r_{\ell }\), see Fig. 18a.

  2. (A2)

    The last disk \(r_{\ell }\) packed into R touches the inner boundary of R, see Fig. 18b.

  3. (A3)

    The empty pocket A left by the sector of the end edge of the zipper inside R is bounded from below by the lower tangent of \(r_{\ell }\) but not by the upper tangent of \(r_{\ell -1}\), see Fig. 18c.

  4. (A4)

    \(r_{out }= 1\), \(r_{in } ={1}/{2}\), see Fig. 18d.

Let B be the sector of R that lies between the two tangents of \(\lambda \), see Fig. 18a. We upper bound the area of the gap of R as \(|A| + |B| \le 1.07024 |S_1|\), as follows.

Let \(\mu \subset R\) be the disk touching the inner and the outer boundary of \(R_1\) and the upper tangent of \(r_{\ell }\) from above, see Fig. 18e. Note that the disk \(\lambda \) was not part of the input but needed for the description of our first simplifying assumption. Thus, \(\lambda \) is not relevant anymore for the following descriptions. Furthermore, let D be the part of the cone induced by \(\mu \) that lies inside R and between the upper and lower tangent of \(\mu \), see Fig. 18e. In the following, we show that \(|A| - |D| \le 0.07024U_R\).

$$\begin{aligned} |A| - |D|&\le \frac{2 \arcsin {({\lambda }/({{1}/{2} + \lambda }))}}{2\pi }\pi \biggl ( 1 - \biggl ( \frac{1}{2} + 2 \lambda \biggr )^{\!2}\biggr )\\&\qquad -\frac{2\arcsin ({1}/{3}) - 2\arcsin \cdot {({\lambda }/({1/{2} + \lambda }))}}{2 \pi }\frac{3\pi }{4}\\&=\biggl ( \frac{7}{4} - \biggl ( \frac{1}{2} + 2 \lambda \biggr )^{\!2} \biggr )\arcsin \frac{\lambda }{{1}/{2} + \lambda }- \frac{3}{4}\arcsin \frac{1}{3}=: V_{AD}. \end{aligned}$$

The first derivative of \(V_{AD}\) is

$$\begin{aligned} \frac{d}{d\lambda }( V_{AD} ( \lambda ))&=\frac{\displaystyle \biggl ( \frac{1}{{1}/{2}+ \lambda } - \frac{\lambda }{({1}/{2} + \lambda )^2} \biggr ) \biggl ( \frac{7}{4} - \biggl ( 2 \lambda + \frac{1}{2}\biggr )^{\!2} \biggr )}{\sqrt{\displaystyle 1 - \frac{\lambda ^2}{({1}/{2} + \lambda )^2}}}\\&\qquad - 4\biggl ( 2\lambda + \frac{1}{2} \biggr )\arcsin \frac{\lambda }{{1}/{2} + \lambda } . \end{aligned}$$

Solving \({d( V_{AD}( \lambda ))/}{d\lambda } = 0\) yields \(\lambda \approx 0.196638\). Finally, we observe that \(V_{AD}({1}/{8}) \approx -0.01576\), \(V_{DF}( 0.196638) \approx 0.01756\), \(V_{AD}({1}/{4}) \approx 0.00001\). This implies that \(|A| - |D| \le 0.01756 \le 0.07024U_R\), because \(U_R \ge {1}/{4}\). \(\square \)

4.5 Analysis of the Algorithm for the Case \(r_1\le 0.495\)

We show that each computed minimal ring is saturated, see Corollary 4.18. Let \(R_1,\dots ,R_h \subseteq \mathcal {C}\) be the created minimal rings ordered decreasingly w.r.t. their outer radii. The inner boundary of \(R_i\) is the outer boundary of \(R_{i+1}\) for \(i = 1,\dots ,h-1\). We show by induction over h that \(R:=R[r_{out }, r_{in }]:=R_h\) is saturated. Thus, we assume that \(R_1,\dots ,R_{h-1}\) are saturated, implying that \(\mathcal {C} \setminus r_{out }\) is saturated, where \(r_{out }\) is the outer radius of \(R_h\).

For the remainder of Sect. 4.5, each cone induced by a disk \(r_i\) packed by Disk Packing is charged by the entire area of \(r_i\).

Lemma 4.16

Assume \(r_n <{1}/{4}\). There is at least one disk \(r_k\) packed into R and touching both the inner and the outer boundary of R.

Proof

Assume that our algorithm did not pack a disk with radius smaller than 1/4 adjacent to \(\mathcal {C}\). Let \(r_k\) be the largest disk not packed adjacent to \(\mathcal {C}\).

By Lemma 4.5 we obtain that \(r_k\) is smaller than 1/4. This implies that the area of the sector that is not covered by the cones induced by \(r_1,\dots ,r_{k-1}\) is upper bounded by \(\arcsin (1/3)\), see Fig. 19.

Fig. 19
figure 19

Ensuring density of at least \(\rho \) for all cones induced by disks packed by Disk Packing implies a density of at least 0.5 for the entire container disk

For \(i = 1,\dots ,r_{k-1}\), the cone induced by \(r_i\) is charged by the entire area of \(r_i\). Lemma 4.4 implies that each cone has a density of at least \(\rho \), because \(r_1,\dots ,r_n \le 0.495\). This implies that the total area of \(r_1,\dots ,r_{k-1}\) is greater than

$$\pi \cdot \rho \cdot \frac{2\pi - 2\arcsin ( 1/3)}{2\pi } = \rho \biggl (\pi - \arcsin \frac{1}{3}\biggr )>\frac{\pi }{2},$$

which is a contradiction.\(\square \)

Lemma 4.17

\(R_h\) is saturated.

Proof

Let \(S_1\) be the sector of \(R_h\) that is covered by cones induced by disks packed by Disk Packing or by sectors of zippers packed by Ring Packing. Lemma 4.16 implies that there is a disk \(r_k\) packed into \(R_h\) such that \(r_k\) touches the inner and the outer boundary of \(R_h\). Let \(S_2\) be the sector of \(R_h\) between the lower and the upper tangent of \(r_k\).

We move potentials \(\delta _1, \delta _2\) from \(S_1,S_2\) to a potential variable \(\varDelta \) and guarantee that \(\varDelta \) is at least 1/2 times the area of the gap G of \(R_h\). Finally, we move \(\varDelta \) to G, implying that G is saturated, which in turn implies that \(R_h\) is saturated.

Lemma 4.8 implies that the density of \(S_2\) is at least 0.77036. We move a potential \(\delta _2 := ( 0.77036 - \rho ) |S_1| > 0.20971U_{R_h}\) from \(S_1\) to \(\varDelta \), implying that \(S_2\) has still a density of \(\rho \).

As Disk Packing only packs disks with a radius of \({\mathcal {C}}/{4}\), combining Lemma 4.4 and Corollary 4.10 yields that \(S_1\) has a density of at least \(\rho \). Lemma 4.15 implies that the area of the gap of \(R_h\) is at most \(1.07024U_R\). The area of \(R_h\) is at least \({2 \pi U_{R_h}}/({2 \arcsin (1/3)})~\mathrm{which~is~larger~than}~9.24441U_{R_h}\). Thus, the area of \(S_1\) is at least \((9.24441 - 1.07024)U_{R_h} = 8.17417U_{R_h}\). Hence, we move a potential \(\delta _1:=( \rho - {1}/{2})8.17417U_{R_h} > 0.49576U_{R_h}\) to \(\varDelta \).

We have \(\varDelta = \delta _1 + \delta _2 > 0.49576U_{R_h}+ 0.20971U_{R_h}=0.70547\), which is large enough to saturate a sector of area \(V_\varDelta =2\cdot 0.70547U_{R_h}=1.41094U_{R_h}\). As \(|G|\le 1.07024\), moving \(\varDelta \) to G yields that G is saturated, which implies that \(R_h\) is saturated. This concludes the proof.\(\square \)

Corollary 4.18

Each minimal ring is saturated.

As each ring can be partitioned into minimal rings, we obtain the following.

Corollary 4.19

All rings are saturated.

Combining Lemma 4.5 and Corollary 4.19 yields that all disks are packed.

Lemma 4.20

Our algorithm packs all input disks.

Proof

By induction assumption we know that \(O \setminus \mathcal {C}\) is saturated and Corollary 4.19 implies that all rings inside \(\mathcal {C}\) are also saturated. Let \(\overline{\mathcal {C}}\) be the disk left after removing all rings from \(\mathcal {C}\), implying that \(\overline{\mathcal {C}}\) is empty. Lemma 4.5 implies that a final iteration of Disk Packing to \(\overline{\mathcal {C}}\) yields that all remaining disks are packed into \(\overline{\mathcal {C}}\). This concludes the proof.\(\square \)

4.6 Analysis of the Algorithm for the Case \(0.495 \le r_1 \le {1}/{2}\)

In this section, we show that our algorithm packs all disks if \(0.495 \le r_1 \le {1}/{2}\). Let \(R_1,\dots ,R_{h}\) be the maximal rings ordered decreasingly w.r.t. their outer radii. As \(R_1,\dots ,R_{h}\) are maximal, \(R_1,\dots ,R_{h}\) are also ordered decreasingly w.r.t. their widths, because our algorithm processes the disks \(r_1,\dots ,r_n\) in decreasing order. The inner radius of \(R_i\) is equal to the outer radius of \(R_{i+1}\) for \(i = 1,\dots ,h\). We distinguish whether there is a maximal ring with inner radius smaller than 1/2 or not.

Lemma 4.21

If all inner radii of maximal rings are smaller than or equal to 1/2, all disks are packed.

Proof

Lemma 4.22 implies that the center of a smallest disk inside each minimal ring \(R_{\min }\) that lies inside \(R_1,\dots ,R_h\) lies above the upper tangent of \(r_1\). Hence, each zipper inside \(R_1,\dots , R_h\) has a length if at least two. Thus, Lemma 4.9 implies that all rings of \(R_1,\dots ,R_h\) are saturated. Thus, if there is a disk \(r_i\) that cannot be packed by our overall algorithm, Disk Packing fails to pack \(r_i\). But this is a contradiction to Lemma 4.5 implying that all disks are packed.\(\square \)

We use the following lemma in the proof of Lemma 4.21.

Lemma 4.22

Let \(r_1 \ge 0.495\) placed adjacent to \(\mathcal {C}\). The largest disk r whose midpoint can be placed on a tangent t of \(r_1\) such that \(r_1,r\) do not overlap has a radius of at least 1/4, see Fig. 20.

Proof

W.l.o.g., we assume \(r_1 = 0.495\), because this does not increase the area of the sector between t and \(r_1\). Let \(m_1\) be the midpoint of \(r_1\), \(c_1\) the orthogonal projection of \(m_1\) onto t, and \(c_2\) the intersection point of t with the boundary of \(\mathcal {C}\), see Fig. 20.

Fig. 20
figure 20

For \(r_1 \ge 0.495\) placed adjacent to D, the largest disk \(r_2\) with its midpoint \(m_2\) on a tangent to \(r_1\) has a radius of at least 1/4

Pythagoras’ Theorem implies \(|m c_1| = \sqrt{0.505^2 - 0.495^2} ={1}/{10}\), which yields \(|c_1 c_2| = {9}/{10}\). For the sake of contradiction, assume \(|c_2m_2| ={1}/{4}\). Another application of Pythagoras’ Theorem implies that \(|m_1 m_2|\) is equal to \(\sqrt{0.495^2 + 0.65^2} \approx 0.81702 > 0.505 +{1}/{4} = |m_1 m_2|\) which contradicts the assumption. This concludes the proof.\(\square \)

Hence, we assume w.l.o.g. that there is a maximal ring with inner radius smaller than 1/2. Let \(R_{{M}}\) be the maximal ring with outer radius larger and inner radius \({\lambda _M}\) not larger than 3/4. First, we show that we can move a potential of

$$\begin{aligned} \frac{\lambda _{{M}}^2}{4}\arcsin \frac{1}{3} \end{aligned}$$
(1)

from \(R_1,\dots ,R_{{M}}\) to potential function \(\varDelta \) while guaranteeing that \(R_1, \dots ,R_{{M}}\) is saturated, see Corollary 4.26. We distinguish whether \({{M}} = 1\) or \({{M}} > 1\), see Lemmas 4.23 and 4.25.

For the remainder of this section, each disk \(r_i\) packed by Disk Packing in Phase 1 charges the cone induced by \(r_i\) by the entire area of \(r_i\).

Lemma 4.23

Let \(0.495 \le r_1 \le {1}/{2}\) and \({{M}} = 1\). We can move a potential of (1) from \(R_1\) to potential function \(\varDelta \) while guaranteeing that \(R_1\) is saturated.

Proof

Let C be the cone induced by \(r_1\), see Fig. 21. Lemma 4.4 implies that C is saturated. Lemma 4.4 implies that the density of C is lower-bounded by 1/2. Thus, we assume w.l.o.g. that the density of C is 1/2.

Fig. 21
figure 21

The case in which the largest maximal ring has a width at least as large as 1/4

In the following, we consider three sectors \(S_1,S_2,S_3 \subset R_1\). We prove that the potentials of \(S_1,S_2,S_3\) can be reduced by certain potentials (denoted by \(\delta _1,\delta _2,\delta _3\)) while still ensuring that a density of 1/2 for \(R_1\). We iteratively remove \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) and charge it to \(\varDelta \).

As we want to lower bound the potential that we can remove from \(R_1\) while maintaining that \(R_1\) is saturated, we upper bound the sum of the gaps of all minimal rings inside \(R_1\). Thus, we assume w.l.o.g. that \(R_1\) is minimal, because this does not increase the sum of the gaps inside \(R_1\). Lemma 4.15 implies that the gap of \(R_1\) is at most \(1.07024U_{R_1}\).

\(\bullet \)   Construction of \(S_1,\delta _1\):  Lemma 4.24 implies that there is a disk \(r_k\) packed into \(R_1\) touching the inner and the outer boundary of \(R_1\), see Fig. 21a. Let \(\alpha \) be the angle of the cone induced by \(r_k\). Lemma 4.8 implies that the part \(S_1\) of \(R_1\) that lies between the two tangents of \(r_k\) has a density of at least 0.77036. We remove a potential of \(\delta _1 :=( 0.77036 - \rho ) |S_1| = 0.20936|S_1|=0.20936U_{R_1}\) from \(S_1\) and move it to \(\varDelta \). This implies that the density of \(S_1\) is equal to \(\rho \) and that we have saved a potential enough for achieving a density of \(\rho \) for a sector of area \({0.20936}U_{R_1}/\rho \approx 0.37319U_{R_1}\).

\(\bullet \)   Construction of \(S_2,\delta _2\):  Lemma 4.22 implies that the midpoint of the last disk \(r_{\ell }\) packed into \(R_1\) lies above the upper tangent \(t_u\) of \(r_1\), see Fig. 21a. Combining Lemmas 4.9 and 4.4 implies that the part \(S_2\) of \(R_1\) that lies above the lower tangent of \(r_1\) and below the center ray \(c_{\ell }\) of \(r_{\ell }\) has a density of \(\rho \), see Fig. 21a. The angle of the cone C induced by \(r_1\) is upper bounded by \(\pi \), because \(r_1\le 1/2\). This implies that the angle between the upper tangent and the lower tangent of \(r_1\) in counterclockwise order is lower bounded by \(\pi \), see Fig. 21a. Hence, the area of \(S_2\) is lower bounded by \(\pi U_{R_1}/(2\arcsin (1/3))>4.6222U_{R_1}\). As \(S_2\) has a density of \(\rho \), we move a potential of \(( \rho -1/2)|S_2|>(\rho -1/2)4.6222U_{R_1} > 0.28033U_{R_1} =: \delta _2\) from \(S_2\) to \(\varDelta \), while ensuring that \(S_2\) is saturated and thus \(R_1\) as well. The value of \(\varDelta \) is at least as large as the potential needed to achieve a density of \(\rho \) for a sector of area \(({0.28033}/{\rho } + 0.37319)|S_1| > ({1}/{2} + 0.37319)|S_1| = (1-0.12681)|S_1| = 0.87319U_{R_1}\).

\(\bullet \)   Construction of \(S_3,\delta _3\):  Let \(S_3\) be the sector defined as that part of C that is covered by sectors of the uniqueFootnote 4 zipper inside \(R_1\), see Fig. 21b. We charge \(\varDelta \) by the sum \(\delta _3\) of the potentials moved from disks of the zipper to \(S_3\). Lemma 4.4 implies that removing \(\delta _3\) from \(S_3\) still ensures that C is saturated. As \(\delta _3\) is monotonically increasing with \(r_1\) we assume w.l.o.g. \(r_1=0.495\) for lower-bounding \(\delta _3\).

\(\bullet \)   Lower-bounding \(\varDelta := \delta _1 + \delta _2 + \delta _3\):  We lower bound the value of \(\varDelta \) in terms of that part A of \(R_1\) that lies between the upper tangent \(t_u\) of \(r_1\) and the lid \(\ell _1\) of \(R_1\), see the blue sector in Fig. 21b. In particular, we lower bound the area \(V_{\varDelta }\) of an arbitrary sector such that \({\varDelta }/{V_{\varDelta }}\ge \rho \). Lemma 4.15 implies that the gap of \(R_1\) has an area of at most \(1.07024U_{R_1}\), implying

$$\begin{aligned} V_{\varDelta }\ge |A| - 1.07024U_{R_1} + 0.87319U_{R_1} = |A| - 0.19705U_{R_1}. \end{aligned}$$

Recall that C is the cone induced by \(r_1\). Furthermore, we consider the intersection point \(c=(c_x,c_y)\) of the boundary of \(r_1\) and the inner boundary of \(R_1\), where \(c_x,c_y\) are the coordinates of c, see Fig. 21b. For upper-bounding the angle \(\beta \) between the center ray of \(r_1\) and \(\ell _1\) we assume \(r_1=1/2\). As c lies on the boundary of \(r_1\), we have \((c_x-1/2)^2+c_y^2=1/4\), which is equivalent to \(c_y^2=c_x-c_x^2\Leftrightarrow c_y^2+c_x^2=c_x\) implying \(\sqrt{c_x}=\sqrt{c_y^2+c_x^2}\). Thus, \(|mc|=\sqrt{c_x}\), implying that \(\beta \) is \(\arccos \sqrt{c_x}\). Furthermore, we obtain from \(|mc|=\sqrt{c_x}\) that the area of \(R_{1}\) is equal to \(\pi ( 1-c_x)\).

We observe that the angle between the center ray of \(r_1\) and the upper tangent of \(r_1\) is

$$\begin{aligned} \frac{\pi }{2} - \arccos \frac{r_1}{1-r_1}\ge \frac{\pi }{2}- \arccos \frac{0.495}{0.505}\ge 0.4365\pi . \end{aligned}$$

This yields

$$\begin{aligned} |A|\ge \frac{0.4365\pi - \arccos \sqrt{c_x}}{2 \pi }\pi (1-c_x). \end{aligned}$$

The angle \(\alpha \) of the cone induced by \(r_k\) is equal to

$$\begin{aligned} \arcsin \frac{1- \sqrt{c_x}}{1+\sqrt{c_x}}, \end{aligned}$$

because \(|mc| = \sqrt{c_x}\). Hence, we upper bound

$$|S_1| \le \frac{2}{2 \pi }\arcsin \frac{1- \sqrt{c_x}}{1+\sqrt{c_x}}\cdot \pi (1-c_x).$$

We lower bound as follows.

$$\begin{aligned} V_{\varDelta } - \frac{c_x}{2}\arcsin \frac{1}{3}&\ge |A| - 0.19705|S_1| - \frac{c_x}{2}\arcsin \frac{1}{3}\\&\ge \frac{0.4365\pi - \arccos \sqrt{c_x}}{2}( 1 - c_x )\\&\quad - 0.19705 \cdot \frac{ 1 - c_x}{2}\cdot 2\arcsin \frac{1- \sqrt{c_x}}{1+ \sqrt{c_x}}-\frac{c_x}{2}\arcsin \frac{1}{3} =:f(c_x). \end{aligned}$$

Furthermore, we have \(\sqrt{c_x} \in [{1}/{2}, {3}/{4}]\), because the width of \(R_1\) is lower bounded by 1/4 and upper bounded by 1/2. Thus, \(c_x\in [{1}/{4},0.5625]\). We continue by proving \(f(c_x) \ge 0\). Let

$$\begin{aligned} f_1(c_x)&:=\frac{1-c_x}{2}(0.4356\pi -\arccos \sqrt{c_x}),\\ f_2(c_x)&:=0.19705\cdot (1-c_x) \cdot \arcsin \frac{1-\sqrt{c_x}}{1+\sqrt{c_x}} + \frac{c_x}{2}\arcsin \frac{1}{3}, \end{aligned}$$

so that \(f(c_x) = f_1(c_x) - f_2(c_x)\). Because x is positive, we have

$$\begin{aligned} \frac{df_1(c_x)}{dc_x}&= -0.4365\pi + \overbrace{\frac{\sqrt{1-c_x}}{2\sqrt{c_x}}}^{mon. decr. } + \overbrace{\arccos \sqrt{c_x}}^{mon. decr. }\quad \text { and}\\ \frac{df_2(c_x)}{dc_x}&= \frac{1}{2}\arcsin \frac{1}{3}+ 0.19705 \cdot \biggl (\frac{\sqrt{c_x}-1}{2c_x^{3/4}}+ \underbrace{\arcsin \biggl (1-\frac{2}{\sqrt{c_x}+1}\biggr )}_{mon. incr. }\biggr ). \end{aligned}$$

Furthermore,

$$\begin{aligned} \frac{\sqrt{c_x}-1}{2c_x^{3/4}}= \frac{-1}{2c_x^{1/4}}\cdot \biggl (\frac{1}{\sqrt{c_x}}-1\biggr ) \end{aligned}$$

is monotonically increasing due to \(c_x<1\). The first-order derivative of \(f_1(c_x)\) is monotonically decreasing, and the first-order derivative of \(f_2(c_x)\) is monotonically increasing on \(c_x\in [{1}/{4},0.5625]\). Furthermore, we have

$$\begin{aligned} \frac{df_1(c_x)}{dc_x}\biggl (\frac{1}{4}\biggr )&\approx 0.5447> 0,&\qquad \frac{df_1(c_x)}{dc_x}(0.5625)&\approx -0.2048< 0,\\ \frac{df_2(c_x)}{dc_x}\biggl (\frac{1}{4}\biggr )&\approx -0.0364 < 0,&\qquad \frac{df_2(c_x)}{dc_x}(0.5625)&\approx 0.1037 > 0, \end{aligned}$$

which together with the monotonicity of the derivatives means that \(f_1\) attains its minimum and \(f_2\) attains its maximum on \(c_x \in [1/4,0.5625]\) at either \(c_x =1/4\) or \(c_x = 0.5625\). Therefore, we find that \(\min f(c_x) \ge \min f_1(c_x) - \max f_2(c_x) \approx 0.1215 - 0.1079 > 0\) implying \(V_{\varDelta } - (c_x/{2}) \arcsin (1/3)\ge 0\) which is equivalent to \(V_{\varDelta } \ge (c_x/2)\arcsin (1/3)=(|mc|^2/2)\arcsin (1/3) =({\lambda _M^2}/{2})\arcsin (1/3)\). This means that moving the potentials \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) to \(\varDelta \) yields \(\varDelta \ge \rho \cdot ({\lambda }_{{M}}/{2})\arcsin (1/3) >({\lambda }_{{M}}/4)\arcsin (1/3)\) while maintaining that \(S_1,S_2,S_3\) are saturated, implying that \(R_1\) is saturated. This concludes the proof.\(\square \)

The pocket below \(r_1\) is large enough to ensure that there is at least one disk packed into \(R_{1}\), proven by the following lemma.

Lemma 4.24

For each \(i = 1,\dots ,{{M}}\), there is a disk \(r_k\) packed into \(R_{i}\).

Proof

Assume there is an \(i \in \{ 1,\dots , M \}\) such that there is no disk packed into \(R_i\), i.e., there is a disk \(r_k<1/4\) that did not fit into \(R_i\). First, we consider the case \(i=1\). This implies that all previously packed disks \(r_1,\dots ,r_{k-1}\) have radii lower bounded by 1/4. Thus, \(r_1,\dots ,r_{k-1}\) are packed by Disk Packing in Phase 1 adjacent to the container disk. Lemma 4.4 implies that the cones induced by \(r_2,\dots ,r_{k-1}\) have densities lower bounded by \(\rho \), because \(r_2\le 0.495\). As the cone induced by \(r_1\) has an angle of at most \(\pi \), the union A of the cones induced by \(r_1,\dots ,r_k\), see the gray sector in Fig. 19a, has a density of \(\rho \). As \(r_k <1/4\) does not fit between \(r_{k-1}\) and \(r_1\), the angle between the lower tangent of \(r_{k-1}\) and the upper tangent of \(r_1\) is smaller than

$$\begin{aligned} 2\arcsin \frac{r_k}{1-r_k}\le 2 \arcsin \frac{1}{3}. \end{aligned}$$

Hence, the angle of A is larger than \(2\pi - 2\arcsin (1/3)\). Thus, the potential moved to A is lower bounded by

$$\begin{aligned} \frac{2\pi - 2\arcsin (1/3)}{2 \pi }\rho \pi = \frac{2\pi - 2\arcsin (1/3)}{2\pi (2\pi - 2 \arcsin (1/3))}\pi ^2 = \frac{\pi }{2}. \end{aligned}$$

This implies that the entire container disk is saturated, which implies that the total area of \(r_1,\dots ,r_n\) is larger than the half of the container disk. A similar argument implies that for each \(i \in \{ 2,\dots ,M \}\) there is a disk packed into \(R_i\). This concludes the proof.\(\square \)

Next, we consider the case \(m >1\), i.e., there are at least two rings with outer radius not smaller than 3/4. Recall that \(\lambda _{{M}}\) is the inner radius of \(R_M\).

Lemma 4.25

Let \({{M}} > 1\). We can remove a potential of \((\lambda _{{M}}^2/{4}) \arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) while guaranteeing that \(R_1, \dots ,R_{{M}}\) are saturated.

Proof

As the outer radius of \(R_{{M}}\) is at least as large as 3/4 the union of all rings \(R_1,\dots ,R_M\) covers the ring \(R[1,1/4]\) and lies inside the ring \(R[1,1/2]\). Hence, applying the same approach as used in Lemma 4.23 implies that we can remove a potential of \((\lambda _{{M}}^2/{4})\arcsin (1/3)\) from \(R_1,\dots ,R_m\) while guaranteeing that \(R_1, \dots ,R_{{M}}\) is saturated. This concludes the proof.\(\square \)

Let \(C_\varDelta \) be the cone with apex at m, angular radius of \(\arcsin (1/3)\), and radius \(\lambda _{{M}}\) such that \(C_\varDelta \) touches the upper tangent \(t_1\) of \(r_1\) from below, see Fig. 22b. Combining Lemma 4.23 and Lemma 4.25 yields the following.

Fig. 22
figure 22

If there is no disk packed into \(R_h\), the complete disk \(r_{out }\) is saturated

Corollary 4.26

We can move a potential of \((\lambda _{{M}}^2/4)\arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) to potential function \(\varDelta \), while guaranteeing that \(R_1,\dots ,R_{{M}}\) are saturated.

Corollary 4.26 implies that we can add a potential of \((\lambda _{{M}}^2/4)\arcsin (1/3)\) to \(C_\varDelta \). This yields that \(C_\varDelta \) is saturated, allowing us to show that all the remaining maximal rings \(R_{{{M}}+1}, \dots , R_h\) are also saturated.

Lemma 4.27

The rings \(R_{{{M}}+1}, \dots , R_h\) are saturated.

Proof

The proof is by induction. Assume that the rings \(R_{{{M}}+1},\dots ,R_{h-1}\) are saturated. Let \(r_{out }, r_{in }\) be the outer and inner radius of \(R_h\). W.l.o.g., we assume \(r_{out } = 1\). Note that \(R_h\) is the ring with the largest outer radius implying \(r_{out } = \mathcal {C}\) which is already equal to 1 if no recursion is applied. This means that the simplifying assumption \(r_{out }\) only addresses the recursion. First we show that there is a disk packed into \(R_h\). From this we deduce that \(R_h\) is saturated.

\(\bullet \)   For the sake of contradiction, assume there is no disk packed into \(R_h\). This means that the disk \(r_{crash }\) that did not fit into \(R_h\), is responsible for the construction of \(R_h\). Thus, all disks packed previously adjacent to \(r_{out }\) have radii of at least 1/2 because \(r_{out }=1\). Hence, the sector A of \(r_{out }\) between the upper tangent \(t_1\) of \(r_1\) and the upper tangent \(t_2\) of the disk placed last adjacent to \(r_{out }\) (see the blue cone in Fig. 22a) is smaller than the cone induced by \(r_{crash }\), see the red cone in Fig. 22a. Lemma 4.4 implies \(r_{crash } < 0.2019r_{out }\). Otherwise, the total area of \(r_1,\dots ,r_n\) would be larger than \(\pi /2\), because the red cone would be saturated in case of \(r_{crash } \ge 0.2019\). This is a contradiction.

Let \(C_2\) be the cone with apex at m, an angle of \(2\arcsin ({0.2019}/{0.7981})-\arcsin (1/3)\), and radius \(r_{out }\) such that \(C_2\) touches \(C_{\varDelta }\) from below, see Fig. 22b. Furthermore, let S be that part of \(R_{h}\) that lies above the lower tangent of \(r_1\) and below \(t_2\), see the red cone in Fig. 22c. As \(r_2,r_3,\ldots \le 0.495\), Lemma 4.4 implies that S has a density of at least \(\rho \). As \(r_1\le 1/2\), the cone induced by \(r_1\) has an angle of at most \(\pi \). Furthermore, the angle of A is upper bounded by \(2\arcsin ({0.2019}/({0.5 + 0.2019}))\), because \(r_{crash } \le 0.2019\). This implies that S realizes an angle of at least \(\pi - 2\arcsin ({0.2019}/({0.5 + 0.2019}))\). Hence, we move a potential of

$$\biggl (\rho -\frac{1}{2}\biggr )\frac{\pi - 2\arcsin ({0.2019}/({0.5 + 0.2019}))}{2 \pi }\pi r_{out }^2 \ge \frac{0.1549}{2 \pi }\pi r_{out }^2$$

from S to \(C_2\), maintaining that S is saturated. Furthermore, \(C_2\) is saturated, because \(C_2\) has an angle of

$$2\arcsin \frac{0.2019}{0.5 + 0.2019}- \arcsin \frac{1}{3}< 2\arcsin \frac{0.2019}{0.5 + 0.2019}\le 0.2437 < 2 \cdot 0.1549.$$

As the angle of A is upper bounded by \(2 \arcsin (0.2019/0.7019)\), which is smaller than the sum of the angles of \(C_{{\varDelta }}\) and \(C_2\), we obtain that S has a density larger than 1/2. By induction the remaining part of the entire packing container is saturated, so we conclude that the total input area is larger than half of the container area, which is a contradiction.

Fig. 23
figure 23

Guaranteeing that the ring \(R_h\) is saturated by upper bounding the area of the sectors EF

\(\bullet \)   Lemma 4.15 implies that the part G of the gap of \(R_h\) that lies not inside the cone induced by \(r_1\) has an area of at most \(1.07024U_{R_h}\). In the following, we construct three sectors \(S_1,S_2,S_3\) and move certain potentials \(\delta _1,\delta _2,\delta _3\) from \(S_1,S_2,S_3\) to potential function \(\varDelta \). Finally, we show that after moving \(\varDelta \) to G yields that G is saturated.

  • Construction of \(S_1,\delta _1\):  As there is a disk packed into \(R_h\), there is a disk \(r_k\) touching the inner and the outer boundary of \(R_h\), see Fig. 23. Let \(S_1\) be the sector of \(R_h\) between the lower and the upper tangent of \(r_k\), see the red sector in Fig. 23. Lemma 4.8 implies that \(S_1\) has a density of at least 0.77036. Thus, we move a potential of \((0.77036-1/2)|S_1|= 0.27036 U_{R_h}\) from \(S_1\) to \(\varDelta \), which still ensures that \(S_1\) is saturated.

  • Construction of \(S_2,\delta _2\):  Let \(S_2\) be the part of \(R_h\) that lies between the lower and the upper tangent of \(r_1\) and which is covered by sectors of disks already packed by disk or Ring Packing, see the blue sector in Fig. 23. Corollary 4.11 implies that \(S_2\) as a density of \(\rho \). As the angle of the cone induced by \(r_1\) is upper bounded by \(\pi \), we obtain

    $$|S_2| \ge \frac{\pi }{\pi }\pi ( 1 -( 1 - r_{in })^2) - 1.07024U_{R_h},$$

    which is lower bounded by \(3.55196U_{R_h}\), because \(r_{in } \le 1/2\). Thus, we move a potential of

    $$\begin{aligned} \delta _2 := \biggl ( \rho - \frac{1}{2} \biggr )3.55196U_{R_h} > 0.21542U_{R_h} \end{aligned}$$

    from \(S_2\) to \(\varDelta \). This yields that \(S_2\) is still saturated.

  • Construction of \(S_3, \delta \):  Let \(S_3\) be the intersection of \(C_{\varDelta }\) and \(R_h\). By construction of \(C_{\varDelta }\), see above Corollary 4.26, we can move a potential of \({U_{R_h}}/{4}\) from \(S_3\) to \(\varDelta \), while ensuring that \(R_h \setminus G\) is saturated.

  • Lower bounding \(\varDelta \):   By the construction of \(\delta _1,\delta _2,\delta _3\), we have \(\varDelta = \delta _1 + \delta _2 + \delta _3 \ge ( 0.27036 + 0.21542 + {1}/{4} )U_{R_h} = 0.73578U_{R_h}\), which is enough to saturate a sector of area \(1.47156U_{R_h}\). As the area of G is upper bounded by \(1.07024U_{R_h}\), moving \(\varDelta \) to G saturates G and thus the entire ring \(R_h\).

As \(R_h\) is saturated, it follows by induction that all rings \(R_{M+1},\dots ,R_h\) are saturated. This concludes the proof.\(\square \)

Combining Lemmas 4.25 and 4.27 implies that all rings created by our algorithm are saturated.

Corollary 4.28

If \(r_1 \le 0.495\), all rings are saturated.

Combining Lemma 4.5 and Corollary 4.28 by the same approach as used in the proof of Lemma 4.20 implies that all disks are packed, concluding the proof of Lemma 4.29.

Lemma 4.29

If \(0.495r_1 \le 1/2\), our algorithm packs all disk into the original container disk.

4.7 Analysis of the Algorithm for the Case \(1/2 < r_1\)

In this section we show that our algorithm packs all disks if \({1}/{2} < r_1\). In particular, we reduce the case \({1}/{2} < r_1\) to the case \(r_1 ={1}/{2}\). Then an application of the same approach as used for the case \(0.495 \le r_1 \le {1}/{2}\) implies that all disks from the input are packed by our algorithm.

We start with some technical definitions. The half disk H is that part of a disk D that lies not to the right of the vertical diameter of D. The midpoint, the radius, and the vertical diameter of H are the midpoint, the radius, and the vertical diameter of D.

Fig. 24
figure 24

The total area of the remaining disks to be packed is equal to the striped disk D. As \(|H| = 2 |D|\), it suffices to guarantee that H is saturated

Let D be the disk with radius \(1 - r_1\) inside \(\mathcal {C}\) such that D and \(r_1\) do not overlap, see Fig. 24. Furthermore, let H by the half disk with radius \(2(1 - r_1)\) and its diameter crossing orthogonally the touching point between D and \(r_1\), see the white half disk in Fig. 24.

For the remainder of this section, w.l.o.g., we scale our entire configuration such that D has a fixed radius of 1/2, implying that \(\mathcal {C}\) has a radius of \(1/(2(1-r_1))\) and \(r_1\) a new radius of \({r_1}/(2(1-r_1))\), see Fig. 24.

Lemma 4.2 implies that the total area of \(r_2,\dots ,r_n\) is smaller than the area of D, i.e., smaller than \(\pi (1 - r_1)^2\). Thus, we assume w.l.o.g. that the total area of \(r_2,\dots ,r_n\) is equal to \(\pi (1 - r_1)^2\). The area of H is twice the area of D, i.e., twice the area of the remaining disks to be packed. By assumption, \(\mathcal {O} \setminus \mathcal {C}\) is saturated. As the total input area is equal to the area of \(\mathcal {O}\), \(\mathcal {C} \setminus H\) is saturated. First, we consider the case that there is no ring created by our algorithm.

Lemma 4.30

If there is no ring created by our algorithm, all input disks are packed by Disk Packing.

Proof

Let \(r_i \ne r_1\) be an arbitrary disk, packed by Disk Packing and let \(m_i\) its midpoint. Furthermore, let \(\overline{m}\) be the midpoint of H, see Fig. 25.

Fig. 25
figure 25

In case of \(r_1 >{1}/{2}\), that part of H that lies between its two tangents \(\ell _1,\ell _2\) is charged by the entire area of a disk \(r_i\) packed by Disk Packing

Let \(\ell _1,\ell _2\) be the two rays starting in \(\overline{m}\) and touching \(r_i\). Furthermore, let S be that part of H that lies between \(\ell _1,\ell _2\), see the red bounded sector in Fig. 25. \(r_i\) moves its entire potential to S. By moving the midpoint \(m_i\) of \(r_i\) into the direction of \(\overline{m}\) while maintaining the radius of \(r_i\), the area of S increases while the area of \(r_i\) stays the same. Lemma 4.4 implies that S has a density of at least \(\rho \). Finally, applying the same approach as used in the proof of Lemma 4.5 implies that all disks are packed.\(\square \)

Thus, we assume w.l.o.g. that there are rings created by our algorithm. Let \(R_1,\dots ,R_{h}\) be the maximal rings ordered decreasingly w.r.t. their outer radii. As \(R_1,\dots ,R_{h}\) are maximal, \(R_1,\dots ,R_{h}\) are also ordered decreasingly w.r.t. their widths, because our algorithm processes the disks \(r_1,\dots ,r_n\) in decreasing order.

Lemma 4.31

If the inner radius of \(R_h\) is greater than 1/2, all input disks are packed by our approach.

Proof

We use the potential assignments used in the proof of Lemma 4.30 and apply the same approach as used in the proof of Lemma 4.21. This concludes the proof.\(\square \)

Fig. 26
figure 26

If \(r_1 = r _{in }\ge {1}/{2}\), the disk with diameter equal to the width of the ring R exactly fits into each of the two gray pockets, i.e., each disk with larger diameter does not fit into a gray pocket

Hence, we assume w.l.o.g. that the inner radius of \(R_h\) is smaller than 1/2. Let \(R_1,\dots ,R_{{M}}\) be all maximal rings such that the outer radius of \(R_{{M}}\) is not smaller and the inner radius of \(R_{{M}}\) is smaller than 3/4, see Fig. 26b. As \(R_1,\dots ,R_{{M}}\) are ordered decreasingly w.r.t. their widths, each ring of \(R_1,\dots ,R_{{M}}\) has an inner radius not smaller than 1/2. Lemma 4.32 implies that each ring \(R_1,\dots ,R_{{M}}\) contains at least one disk.

Lemma 4.32

Consider a ring R with an inner radius of \(r_1\). Let \(\ell \) be vertical diameter of \(\mathcal {C}\). The largest disk \(\overline{r}\) that can be packed on the same side of \(\ell \) as the midpoint of \(r_1\) has a radius of 1/2, see Fig. 26a.

Proof

Let \(m_1\) be the midpoint of \(r_1\). The width of R is 1/2. Thus, a disk \(\overline{r}:=1/2\) inside R touches both the inner and the outer boundary component of R. We place the midpoint of \(\overline{r}\) on the bisector between m and \(m_1\). Thus, \(\overline{r}\) is touching the boundary of r, because \(\overline{r}\) touches the inner boundary component of R. Finally, \(|mm_1| = 1-r\) implies that the midpoint of \(\overline{r}\) has a distance of \((1-r)/2\) to \(\ell \). This concludes the proof.\(\square \)

Corollary 4.33

For each \(i = 1,\dots ,{{M}}\), there is a disk \(r_k\) packed into \(R_{i}\), see Fig. 26b.

Note that we assumed w.l.o.g. that \(\mathcal {C}\) has a radius of \(1/(1-r_1)\). We consider the rings \(\overline{R}_1,\dots ,\overline{R}_m\) lying inside the container corresponding to the case \(r_1=1/2\) such that \(R_i,\overline{R}_i\) have the same width for \(i = 1,\dots ,m\), see Fig. 27. Let \(L_i,\overline{L}_i\) be that parts of \(R_i, \overline{R}_i\) that lie below the horizontal diameters of the container disks and below the lids of \(R_i,\overline{R}_i\), see the red sectors in Fig. 27.

Fig. 27
figure 27

Mapping the rings \(R_1,\dots ,R_{{M}}\) onto \(\overline{R}_1,\dots \overline{R}_{{M}}\). The area of \(\overline{R}_i\) is smaller than the area of \(R_{i}\)

In the following, we show that the area \(|\overline{L}_i|\) of \(\overline{L}_i\) is not larger than the area \(|L_i|\) of \(L_i\). Thus, we need a tool for measuring the areas of \(L_i, \overline{L}_i\). Let \(w_i\) be the width of \(R_i,\overline{R}_i\). Let \(r_{in }\) be the inner radius of \(R_i\). Furthermore, let \(C_i, \overline{C}_i\) be the circles with midpoint m and radius \(r_{in } +{w_i}/{2}\) corresponding to the cases \(r_1 >{1}/{2}\) and \(r_1 ={1}/{2}\). Analogously, let \(c_i \overline{c}_i\) be the circles with midpoint m and radius \(r_{in }\) for \(r_1 >1/2\) and \(r_1 ={1}/{2}\). Furthermore, let \(\gamma _i, \overline{\gamma }_i, \mu _i, \overline{\mu }_i\) be those parts of \(C_i,\overline{C}_i, c_i, \overline{c}_i\) that lie inside \(L_i,\overline{L}_i\), see Fig. 28. Finally, let \(r_1, \overline{r}_1\) the circles presenting the inner circle of \(r_1\) for \(r_1 >1/2\) and \(r_1 =1/2\).

Fig. 28
figure 28

The areas of \(L_i\) and \(\overline{L}_i\) are \(w_i \cdot |\gamma _i|\) and \(w_i \cdot |\overline{\gamma }_i|\)

The following observation is straightforward:

Observation 4.34

The areas of \(L_i\) and \(\overline{L}_i\) are \(w_i \cdot |\gamma _i|\) and \(w_i \cdot |\overline{\gamma }_i|\).

Based on Observation 4.34 we can upper bound the area of \(\overline{L}_i\) by the area of \(L_i\).

Lemma 4.35

The area of \(\overline{L}_i\) is not larger than the area of \(L_i\).

Proof

As \(\overline{L}_i, L_i\) have the same width, Observation 4.34 implies that we have to show that \(\overline{\gamma }_i\) is not longer than \(\gamma _i\).

Fig. 29
figure 29

For simplified calculations we shift \(\mu _i\) and \(r_1\) such that \(\mu _i, \overline{\mu }_i\) have the same midpoint m and \(r_1,\overline{r}_1\) have the same midpoint \(m_1\)

For simplified calculations, we move \(\mathcal {C}, r_1,\mu _i, \gamma _i\) by \(r_1-1/2\) to the left, see the transition illustrated in Fig. 29. This does not change the lengths of the circular arcs \(\gamma _i\), but now all \(C_i, c_i,\overline{C}_i, \overline{c}_i, \gamma _i,\overline{\gamma }_i, \mu _i, \overline{\mu }_i\) have the same midpoint m and both versions of \(r_1\) for \(r_1>1/2\) and \(r_1 =1/2\) have the same midpoint \(m_1\), see Fig. 29b.

Fig. 30
figure 30

a In order to upper bound the length of \(\gamma _i\) by the length of \(\overline{\gamma }_i\), we first show that the end point d of \(\mu _i\) lies on the same side of the bisector B(mb) between mb as b. b Then we upper bound the length of the curve \(\beta \) by \((({\pi /6})/({\cos (\pi /6)}))\delta \)

Let a be the intersection point between \(\overline{\mu }_i\) and \(\overline{r}_1\), see Fig. 30a. Let \(\delta \) be the difference between the radii of \(\overline{c}_i\) and \(\overline{r}_1\). Furthermore, let b be the point within a distance of \(\delta \) to \(m_1\), such that \(m_1\) lies in the interior of the segment between a and b. Let B(mb) be the bisector between m and b. Furthermore, let d be the intersection point between \(\mu _i\) and \(r_1\) and \(\ell \) the line induced by \(m_1\) and d, see Fig. 30a. By construction, b lies closer to d than c, see zoom (1) in Fig. 30a, implying that d lies on the same side of B(mb) as b, see zoom (2) in Fig. 30a. Hence, we assume w.l.o.g. that \(\mu _i\) ends on B(mb).

The angle induced by ma in d is upper bounded by \(\pi /6\), because the distance between md is at least as large as the distance between mb. This implies that the length of that part \(\beta \) of \(\overline{\mu }_i\) that lies on the opposite side of B(mb) as b, see the blue curve in Fig. 30b, is upper bounded by

$$\begin{aligned} \frac{\sin ({\pi }/{6})}{\cos ({\pi }/{6})} \delta \le 0.57736\delta . \end{aligned}$$

Let \(\alpha \) be the left of the two angles between the horizontal diameter of \(\mathcal {C}\) and the segment between m and d. We have \(\alpha \ge {\pi }/{2}\), because b lies above the horizontal diameter of \(\mathcal {C}\) and to the right of m. We also denote by \(\mu _i, \overline{\mu }_i\) the radii of \(\mu _i, \overline{\mu }_i\). Thus, the length of the circular arc \(\mu _i\) is

$$\frac{\alpha }{2 \pi } \cdot 2 \pi \mu _i = \alpha \overline{\mu }_i + \alpha \delta \ge \alpha \overline{\mu }_i + \frac{\pi \delta }{2}.$$

This implies that the length of \(\gamma _i\) is lower bounded by \(\alpha \overline{\mu }_i+{\pi \delta }/{2}\).

Fig. 31
figure 31

The length of the curve \(\zeta \) is at most twice the length of the curve \(\beta \), because the radius of \(\overline{\gamma }_i\) is at most twice the radius of \(\overline{\mu }_i\)

Let \(\ell _d\) be the ray emanating from m into the direction of d, see Fig. 31. This means the lid of \(\overline{L}_i\) lies on \(\ell _d\). Let \(\zeta \) be that part of \(\overline{\gamma }_i\) that lies on the same side of \(\ell _d\) as a. As the radius of \(\overline{C}_i\) is at most twice the radius of \(\overline{c}_i\), the length of \(\zeta \) is at most twice the length of \(\beta \). This implies that the length of \(\zeta \) is upper bounded by \(1.15472\delta \).

As \(\alpha \ge {\pi }/{2}\), \(\gamma _i\) is at least as large as \({\pi }\delta /2\) plus the length of \(\overline{\gamma }_i \setminus \zeta \). Thus, we obtain that \(\gamma _i\) is not smaller than \(\overline{\gamma }_i\), because \(\zeta \) is smaller than \({\pi }\delta /2\). This concludes the proof.\(\square \)

Let \(C_\varDelta \) be the cone inside H with apex at \(\overline{m}\), angular radius of \(\arcsin (1/3)\), and radius \(r_m\) such that \(C_\varDelta \) touches the vertical diameter of H, see Fig. 32a.

Fig. 32
figure 32

a The potential that we can remove from \(R_1,\dots ,R_{{M}}\) is large enough to saturate a cone \(C_{\varDelta }\) inside H with apex at \(\overline{m}\), angular radius of \(\arcsin (1/3)\), and radius \(\lambda _{{M}}\) such that \(C_\varDelta \) touches the vertical diameter of H. b The area of \(\overline{H}_m\) is smaller than the area of \(H_{{M}}\)

Combining Corollary 4.26 and Lemma 4.35 implies that we can move a potential of \((\lambda _{{M}}^2/{4})\arcsin (1/3)\) from \(R_1,\dots ,R_{{M}}\) to \(C_{\varDelta }\) while guaranteeing that \(R_1,\dots ,R_{{M}}\) are saturated. From this we deduce that the same approach as used in Lemma 4.27 implies that the maximal remaining rings are also saturated, implying that all maximal rings are saturated. As each ring is a subset of a maximal ring, we obtain the following.

Corollary 4.36

All rings are saturated.

Let \(\ell _{{M}}\) be the vertical line touching \(r_1\) from the left and \(H_{{M}}\) that part of the disk container that lies not inside any ring, see Fig. 32b. Furthermore, let \(\overline{H}_{{M}}\) be the corresponding sector for \(r_1 =1/2\). Let \(D_{{M}},\overline{D}_{{M}}\) be the disks induced by \(H_{{M}},\overline{H}_{{M}}\). The half disk \(\overline{H}_{{M}}\) can be obtained by vertically shrinking \(H_{{M}}\). Thus, the same approach as used in the proof of Lemma 4.20 implies that all disks are packed, concluding the proof of Lemma 4.37.

Lemma 4.37

If \({1}/{2} < r_1\), our algorithm packs all disks into the original container disk.

This concludes the entire proof of Theorem 3.1, i.e., every set of disks with a total area no larger than \({\pi }/{2}\) can be packed into the unit disk which is worst-case optimal due to the instance illustrated in Fig. 2a.

5 Hardness

It is straightforward to see that the hardness proof for packing disks into a square can be adapted to packing disks into a disk, as follows.

Theorem 5.1

It is NP-hard to decide whether a given set of disks fits into a circular container.

Fig. 33
figure 33

Elements of the hardness proof: a A symmetric triangular pocket from [3], allowing three disks with centers \(p_{i_1},p_{i_2},p_{i_3}\) to be packed if and only if the sum of the three corresponding numbers from the 3-Partition instance is small enough. b Creating a symmetric triangular pocket in the center by packing three disks of radius \({\sqrt{3}}/({2+\sqrt{3}})\) and the adapted argument from [3] for creating a sufficiently large set of symmetric triangular pockets

The proof is completely analogous to the one by Demaine et al. [3], who used a reduction from 3-Partition. Their proof constructs a disk instance which first forces some symmetrical free “pockets” in the resulting disk packing. The instance’s remaining disks can then be packed into these pockets if and only if the related 3-Partition instance has a solution. Similar to their construction, we construct a symmetric triangular pocket by using a set of three identical disks of radius \({\sqrt{3}}/({2+\sqrt{3}})\) that can only be packed into a unit disk by touching each other, see Fig. 33. Analogously to [3], this is further subdivided into a sufficiently large set of identical pockets. The remaining disks encode a 3-Partition instance that can be solved if and only if the disks can be partitioned into triples of disks that fit into these pockets.

6 Conclusions

We have established the critical density for packing disks into a disk, based on a number of advanced techniques that are more involved than the ones used for packing squares into a square or disks into a square. Numerous questions remain, in particular the critical density for packing disks of bounded size into a disk or the critical density of packing squares into a disk. These remain for future work; we are optimistic that some of our techniques will be useful.