Origamizer: A Practical Algorithm for Folding
Any Polyhedron
Erik D. Demaine∗1 and Tomohiro Tachi†2
1

MIT Computer Science and Artificial Intelligence Laboratory
32 Vassar St., Cambridge, MA 02139, USA
edemaine@mit.edu
Department of General Systems Studies, The University of Tokyo
3-8-1 Komaba, Meguro-Ku, Tokyo 153-8902, Japantachi@idea.c.u-tokyo.ac.jp

2

Abstract
It was established at SoCG’99 that every polyhedral complex can be folded from a sufficiently
large square of paper, but the known algorithms are extremely impractical, wasting most of thematerial and making folds through many layers of paper. At a deeper level, these foldings get
the topology wrong, introducing many gaps (boundaries) in the surface, which results in flimsy
foldings in practice. We develop a new algorithm designed specifically for the practical foldingof real paper into complicated polyhedral models. We prove that the algorithm correctly folds
any oriented polyhedral manifold, plus an arbitrarily small amount of additional structure on
one side of the surface (so for closed manifolds, inside the model). This algorithm is the first to
attain the watertight property: for a specified cutting of the manifold into a topological disk withboundary, the folding maps the boundary of the paper to within ε of the specified boundary of
the surface (in Fréchet distance). Our foldings also have the geometric feature that every convex
face is folded seamlessly, i.e., as one unfolded convex polygon of the piece of paper. This work
provides the theoretical underpinnings for Origamizer, freely available software written by thesecond author, which has enabled practical folding of many complex polyhedral models such as
the Stanford bunny.
1998 ACM Subject Classification F.2.2 Nonnumerical Algorithms and Problems
Keywords and phrases origami, folding, polyhedra, Voronoi diagram, computational geometry
Digital Object Identifier 10.4230/LIPIcs.SoCG.2017.34

1

Introduction

The ultimate challenge in computational origami design is to devise an algorithm that tells
you the best way to fold anything you want. Several results tackle this problem for various
notions of “best” and “anything”. We highlight two key such results, from SoCG’96 and
SoCG’99 respectively. The tree method [6, 7, 4] finds an efficient folding of a given square ofpaper into a shape with an orthogonal projection equal to a scaled copy of a given metrictree. We use the term “efficient” because the method works well in practice, being thefoundation for most modern origami design, but exact optimization of the scale factor (theusual measure of efficiency) is a difficult computational problem, recently shown NP-hard[3], but one that can be handled reasonably well by heuristics. The strip method [1] finds a∗†

Supported in part by NSF ODISSEI grant EFRI-1240383 and NSF Expedition grant CCF-1138967.
Supported in part by JST PRESTO program and JSPS KAKENHI 16H06106.

© Erik D. Demaine and Tomohiro Tachi;
licensed under Creative Commons License CC-BY
33rd International Symposium on Computational Geometry (SoCG 2017).
Editors: Boris Aronov and Matthew J. Katz; Article No. 34; pp. 34:1–34:15
Leibniz International Proceedings in Informatics
Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, Germany

34:2

Origamizer: A Practical Algorithm for Folding Any Polyhedron

Figure 1 Origamizer software [8, 9] applied to 374-triangle Stanford bunny: real-world folding(left) and computed crease pattern (right).

folding of a given piece of paper into a scaled copy of any desired polyhedral complex (anyconnected union of polygons in 3D), which is a much broader notion of “anything”. But it
inherently provides no way to optimize the scale factor, forcing extreme inefficiency in paper
usage (unless the piece of paper is a long narrow strip).
Our goal is to achieve the best of both these worlds. On the one hand, we want to foldarbitrary polyhedral complexes. On the other hand, we want to be able to optimize the scale
factor to find efficient and ideally practical foldings. The vision is that the origami designerof the future uses 3D modeling software to design their target figure, gives it to an algorithm,
and out comes a practical origami design.
We are not far from this vision today. Origamizer [8, 9] is freely available computer
software implementing a relatively new heuristic for this problem. It achieves surprisingly
practical foldings for complicated polyhedral models. For example, Figure 1 shows the result
for the classic Stanford bunny, coarsened to 374 triangles. In this design, 22.3% of thepaper area makes up the actual surface of the target shape—about a 2:1 scale factor in eachdimension—which matches the material usage ratio in most practical origami design. The
crease pattern is unlike most representational origami designs today, likely incapable of being
designed by hand, yet it is also quite reasonable to fold in practice.1
The catch is that the heuristic implemented by the Origamizer software sometimes fails:
sometimes it cannot even find a feasible solution, which makes it impossible to optimize
even locally. In this paper, we develop an Origamizer algorithm that is guaranteed to find afeasible folding, for any orientable polyhedral manifold. In fact, we describe a large familyof feasible foldings, with many free parameters, similar to the original Origamizer heuristic.
In particular, Figure 1 falls within our family of foldings. The key new guarantee is that
our family of foldings is nonempty, and that we can find such a folding (actually many)algorithmically. While we do not consider here how to optimize within the family of foldings(this is likely a computationally difficult problem, like the tree method), the starting points

1

To see an accelerated video of the 10-hour folding process, visit http://www.youtube.com/watch?v=
GAnW-KU2yn4

Erik D. Demaine and Tomohiro Tachi

34:3

found by our algorithm open the door to a wealth of optimization heuristics. The result
should be at least as efficient as the existing Origamizer software, because the family offoldings is broader, but now it is also guaranteed never to fail. We plan to implement thisprovably correct algorithm in a future version of the Origamizer software.
Our Origamizer algorithm proves the existence of a new type of folding, called watertight,
for any specification of where the boundary of the paper should go. That is, suppose we are
told how to cut the given oriented polyhedral manifold into a topological disk with boundary.
(If the manifold is itself a disk, no cutting is necessary.) Informally, a watertight folding has
no holes, gaps, or slits internal to this boundary—only paper. Formally, the boundary of thepiece of paper (which can be any convex
polygon) maps to within Fréchet distance εof the boundary of the polyhedral surface,
for a specified ε > 0. Thus the rest of thepolyhedral surface must be covered entirelyby the interior of the paper. By contrast,
this property is violated violently in the strip
method [1], which places the boundary of
Figure 2 Folding a surface with gaps likethe paper on every face. Indeed, the lackthe strip method (left) versus a watertight foldof the watertight property seems a natural
ing with some extra tiny facets like our method
formalization of how the strip method felt
(right). The paper boundary is drawn thick.
like “cheating”. Figure 2 shows a comparison.
Because the paper is homeomorphic to a disk, disk surfaces are the best we could hopeto make watertight. Although we believe the watertight property is an essential feature ofwhat makes Origamizer’s foldings practical, it has one theoretical downside: it cannot foldexactly a desired polyhedral complex. By watertightness, a negative curvature vertex must
be covered by an interior point of the piece of paper, which has a disk neighborhood. In
other words, an entire neighborhood of a point of the piece of paper must fold to an entire
neighborhood of a vertex of negative curvature. But such a folding is impossible by theGauss-Bonnet Theorem.
Therefore Origamizer aims to fold a slight variation of the polyhedral complex, which adds
small additional features at the vertices and along the edges. These features all have Hausdorff
distance at most ε from the polyhedral complex, for any specified ε > 0. Furthermore, fororientable polyhedral surfaces, the features can all be placed on one side. In the case of anorientable closed polyhedron, like the Stanford bunny, we can place all of these features on
the inside, so that they become invisible to the spectator. Such hidden features are standard
in origami, and we believe they are well worth it to achieve the watertight property.

2

Problem Statement and Overview

The Origamizer problem is to find a convex polygon of paper P and a “watertight”, “seamless”,“ε-extra folding” of P into a given “polyhedral manifold” Q.2 We need to define the fournotions in quotes.
A polyhedral manifold Q is an embedded polyhedral manifold with strictly convex facets
homeomorphic to a disk. Such Q could come from any polyhedral complex using standard
techniques: for nonorientable or nonmanifold complexes, doubling every face to make them2

Any convex polygon of paper can be folded into any other convex polygon after suitable scaling [1], so
we can view the convex shape of the piece of paper as a free choice by the algorithm.

SoCG 2017

34:4

Origamizer: A Practical Algorithm for Folding Any Polyhedronorientable manifolds; for orientable manifolds not homeomorphic to a disk, cutting each handle;
and for nonconvex facets, subdividing into convex pieces. The polyhedral manifold Q has
two specified sides, the clean side and the tuck side. For defining clockwise/counterclockwise
orientations, we view the tuck side as the top side of the manifold. We require that the
manifold does not touch itself, at least on the tuck side, other than the two boundary edges
that come from each cut edge.
For any ε > 0, an ε-extra folding of a polygon of paper, P , into a manifold with specified
boundary, Q, is a folded state of P (as defined, e.g., in [4, chapter 11]) whose image includes
all of Q and otherwise is within ε of Q on the tuck side of Q. More precisely, we construct atuck-side ε offset of Q, by unioning the portion of a radius-ε ball, centered at every pointof Q, that lies on the tuck side of Q; when Q does not separate the ball into two portions(i.e., within ε of the original boundary of Q), we include the entire ball. Then the imageof an ε-extra folding must lie entirely within the union of Q and its tuck-side ε offset. In
particular, the Hausdorff distance between Q and the image of the folded state is at most ε.
Such a folding is seamless if the clean side of every facet of Q is covered by a single
facet of the crease pattern of P , at the outermost layer of the folded state. Intuitively, thiscondition means that all visible creases and boundary edges of the piece of paper lie on edges
and the tuck side of Q. In our foldings, we will satisfy the stronger property that each facetof Q is represented by a single uncreased face of paper, with no additional layers of paper
even on the tuck side.
Such a folding is watertight if there is a closed curve C on P (the effective boundary of P )that folds to a 3D curve having Fréchet distance at most ε to the closed loop of boundaryedges of Q, such that the folded image of the interior of C covers the interior of Q. In otherwords, the exterior of C is extraneous to the folding, and every point on the folded C iswithin distance ε of a corresponding point on the boundary of Q, where this correspondence
proceeds monotonically around both curves (according to some parameterization). In ourfoldings, we will further guarantee that C is convex; indeed, C will be the boundary of thepiece of paper P output by our algorithm.
Overview. Figure 3 gives a visual overview of the entire Origamizer algorithm. The
algorithm first attaches ε-thin faces to the target polyhedral surface Q to form a target
folded structure called a waffle, effectively splitting negative-curvature vertices into multiple
positive-curvature pockets of the waffle [Section 3]. Next the algorithm locally “squashes”
these pockets into the piece of paper, with angles large enough that they can be folded down
to the desired angles [Section 4]. All that remains is to fold away the excess material between
these squashed pockets, and thereby form the waffle. To guide this process, the algorithm
first draws streams (smooth constant-width channels) that connect together correspondingedges and vertices of different squashed pockets [Section 5].
Ultimately, Origamizer uses a Voronoi diagram as the basis for its crease pattern: for any
set of sites, we show how to fold an abstract waffle (not necessarily embedded in 3D) withexactly one pocket for every Voronoi cell [Section 7]. The challenge is to choose sites defining
the Voronoi diagram so that the resulting abstract waffle can be folded into the desired waffle.
The algorithm places one site at each squashed pocket, several sites along each stream, andadditional sites to fill the rest of the paper [Section 6]. The resulting abstract waffle canbe folded into the desired waffle by collapsing each stream’s pockets to bring together the
pockets at either end of the stream, and by collapsing all additional pockets [Section 7].
Given the page limit, we focus here on high-level sketches and figures of the required
properties and algorithms. Refer to the full version of the paper [5] for the details and proofs.

Erik D. Demaine and Tomohiro Tachi

34:5

ORIGAMIZER ALGORITHM

Polyhedral Surface Q

cell
cell perpendicularwall triangle wi
wall quadrangle wi

floor vertex v§3: Tuck Proxy T(waffle)§4: Local Squashingof Pockets

Waffle Pocketsy'modified[x',y'] dualx'
floor graphbottom angles
floor face f

waffle graph

P'

y

*

(x,y)

'

x

brook node

waffle dual^
modified
dual
e'

y^

*

e

'

§7: Voronoi diagram^xPboundary river cap§5: Stream Placement
brooks (vertex stream)
rivers (edge stream)
stream banks

Voronoi dual
waffle graph correspondance
quadrangulartriangularquadrangulartriangularboundary

realizing quadrangularrealizing triangular
not realizing triangularboundary

Voronoi diagram in geodesic vertex metriccrimp folding§7: Folding to Abstract Waffle§7: Final Folding f(P)T

§6: Site Placement
core
point site
segment site
polygon site

P

Figure 3 Visual overview of entire Origamizer algorithm, including intermediate data structures.

SoCG 2017

34:6

Origamizer: A Practical Algorithm for Folding Any Polyhedron

waffle graphwafflefloor graphwaffle dualboundary nodes

Figure 4 A waffle, the waffle graph, and the waffle dual. Wall faces are red; floor faces are grey.

3

Tuck Proxy and Waffles

Given the target polyhedral manifold Q, the first step of the algorithm computes a “tuckproxy” T , which is a special type of “polyhedral waffle”. The tuck proxy T is a polyhedral
complex that will contain our folding and which contains (and lies very close to) the target
polyhedral surface Q. Roughly speaking, a polyhedral waffle consists of floor polygons, which
together form a topological disk, and wall polygons—wall quadrangles glued along flooredges, and wall triangles glued at floor vertices. The top edges of the wall polygons, opposite
their attachment to their floor, must form an edge-2-connected planar graph called the wafflegraph; refer to Figure 4. The waffle dual is the “modified dual” of the waffle graph. Roughly
speaking, the modified dual is the usual planar dual plus a boundary node and incident edge
for each edge of the outside face. (Thus, each boundary node has exactly one incident edge.)
In the tuck proxy, the floor polygons must be exactly the facets of Q. Any single floor
vertex, floor edge, or floor polygon, together with its incident wall polygons, must form apolyhedral manifold homeomorphic to a disk (called a waffle pocket) that is intrinsicallyconvex, meaning that no point has more than 360◦ of material. Furthermore, every wall
polygon must have height at most ε, so that the tuck proxy is within ε of Q. In addition,
the algorithm outputs a parameter ε0 with 0 < ε0 < ε that lower bounds how far the tuckproxy extends beyond Q, which guarantees no global self intersection up to that distance.
Figure 5 illustrates this step of the algorithm. The main idea is to inset the edges of Q on
the tuck side (like the beginning of the formation of the 3D straight skeleton) by an amountε0 small enough that no collision events occur. This insetting bisects all dihedral angles, so
in particular, it divides every reflex dihedral angle into two convex dihedral angles. Thisconsequence is the key to how we guarantee that the waffle pockets are intrinsically convex.
We then connect these edge offsets around each vertex of Q, which is equivalent to drawing
a connected graph on a small sphere around the vertex. We first connect these offsets by acycle on the sphere. The pocket formed by the floor polygon, two offset edges, and one edgeof the cycle has a perimeter of at most 360◦ because of the strict convexity of the incident
polygons and strict convexity of the angle between the offset and the floor. Then, to makethe remaining pocket intrinsically convex, we subdivide the cycle by overlaying a regulartetrahedron and triangulating (if necessary). The resulting faces have edge lengths of at
most 109.5◦ , so perimeter at most 328.5◦ < 360◦ .

4

Waffle Pocket Squashing

Given the tuck proxy T and parameter ε0 , the next step of the algorithm computes a local
squashing of each waffle pocket of the tuck proxy. Roughly speaking, local squashing consistsof adding material between polygons in the waffle pocket until they lie flat and nonoverlapping

Erik D. Demaine and Tomohiro Tachi

34:7

Interior Vertex

offset wall
quadrangle

inset

overlay
tetrahedron

triangulate(if necessary)

waffle pocket
wall triangle
wall quadrangle

floor vertex

min distance isdetermined bydepth of edge tuckfloor polygon

Boundary Vertex

offset wall
quadrangle

inset

Figure 5 Construction of the tuck proxy for an interior vertex (top) and boundary vertex (bottom).
The interior-vertex construction consists of three rows. Top: spherical view of behavior around avertex; Middle: planar projection of behavior on the sphere; and Bottom: broader 3D view, aroundan edge and its two endpoints (left) and actual tuck proxy around the vertex (right).

in the plane. More formally, a local squashing draws each floor and wall polygon of the waffle
pocket in the plane subject to only increasing the bottom angles of wall polygons, preserving
convexity of the wall polygons, preserving the connectivity between the polygons, leaving noangular gaps between polygons at floor vertices, keeping the squashed wall polygons within
ε0 of the floor vertex/polygon, and preserving the cyclic order of the wall polygons aroundthe floor vertex/polygon. The top edges of the squashed wall polygons must form a convex
polygon in the plane, called the cell, so that the cell perpendiculars (normal to each cell edge,
and starting from the midpoint of the bottom of the corresponding squashed wall polygon)
proceed counterclockwise around the floor vertex/polygon.
Figures 6 and 7 illustrate the two cases of this step of the algorithm, which get applied
to all waffle pockets of the tuck proxy corresponding to floor vertices and floor polygons,
respectively. The algorithm first vertex-unfolds [2] the wall polygons into the plane, leaving
angular gaps evenly distributed between squashed wall polygons. We then place rays for eachgap from the vertex, such that consecutive rays sandwich the squashed wall polygons andform an angle strictly less than 180◦ . (Specifically, each ray is the angular bisector between
the angular bisectors of two consecutive squashed wall polygons, possibly rounded to one ofthose wall polygon’s boundaries.) We connect the intersection of the rays with a smoothconvex curve (for the floor vertex case, a circle; and for the floor polygon case, the offset of

SoCG 2017

34:8

Origamizer: A Practical Algorithm for Folding Any Polyhedron

Cell Perpendicular
Rays
Cell
Wall Polygonvertex unfolding

place rays in the gap

1⁄2 ε′
intersect with circle

Figure 6 Local squashing algorithm for a waffle pocket corresponding to a floor vertex.

≤ 1⁄2 ε′Cell Perpendicular
Rays
Cell
Wall Polygonvertex unfold andplace rays in the gap

intersect withoffset smoothed at corners

Figure 7 Local squashing algorithm for a waffle pocket corresponding a floor polygon.

the floor polygon smoothed at the corner with quadratic Bézier curve), placed close enoughto and surrounding the floor vertex/polygon, to obtain a strictly convex cell. The resulting
squashed wall polygons are bounded by the rays and the cell, and thus the bottom angles
only increase. Because we use an offset curve to intersect the rays, wall quadrangles attached
to a floor polygon squash into trapezoids.

5

Placing Streams

Given the tuck proxy T , parameter ε0 , and a local squashing of its waffle pockets, the next
step of the algorithm computes a stream placement, which consists of a convex polygon P 0
and a mapping from various features of the waffle dual into geometric structures drawn
on P 0 . Roughly speaking, each waffle dual node maps to either a point in P 0 (for a waffle
pocket corresponding to a floor vertex) or an isometric embedding of a facet of Q in P 0(for a waffle pocket corresponding to that floor polygon); and each waffle dual edge maps
to a stream—a C 1 curve consisting of line segments and circular arcs, possibly thickened
orthogonally. Specifically, if the waffle dual edge corresponds to a wall quadrangle, thenthe stream connects two equal-length edges of the placed floor polygons, and the stream isthickened by an amount equal to that common edge length, forming a river (as in [6, 7]).
On the other hand, if the waffle dual edge corresponds to a wall triangle, then the stream
connects two points, either placed floor vertices or vertices of placed floor polygons, and thestream has zero thickness, forming a brook.
This step of the algorithm also outputs a number δ > 0 that is a lower bound on the“clearance” of the output structures, that is, the critical radius at which a disk Minkowskisummed with the structures causes a collision event. This lower bound is important forbounding the number of creases in the ultimate Origamizer design.
This step of the algorithm consists of two major parts. In the first part, we embed theErik D. Demaine and Tomohiro Tachi

34:9boundary brook node

P'

p
p

boundary river cap

start direction

Figure 8 Left: Tutte embedding with outside face p. Right: Construction of start ray
and convex polygon P 0 .

x

y

Sx

Sy

Tx

Ty

Figure 9 Connecting two embedded waffle dual
nodes x and y with a river.

waffle dual in the plane using a Tutte embedding [10], and construct a convex polygon P 0 sothat the boundary nodes lie on the boundary of P 0 ; refer to Figure 8. During this construction,
we guarantee that every boundary node attached to a river has enough clearance to be
thickened parallel to its edge of P 0 , to its desired width, without leaving that edge of P 0 andwithout intersecting other boundary nodes.
In the second part, we place floor vertices and polygons at the nodes of the embedded
waffle dual graph, and connect them by rivers and brooks, respectively, along the edges ofthe embedded graph; see Figure 9. The main challenge is that the directions of the edges ofthe embedded waffle dual graph do not (in general) match the start directions of the streams
defined by the cell perpendiculars of the local squashing. We construct a local structurearound each embedded waffle dual node to adjust these directions without self-intersection.
Specifically, this local structure consists of three nested disks, centered at each waffle dual
node x and having radii rx < sx < tx , each helping to adjust the directions of streams
incident to x; refer to Figure 10. The radius-rx disk Rx separates the streams from thefloor vertex/polygon; the radius-sx disk Sx bends the streams to meet the disk boundary
orthogonally; and the radius-tx disk Tx twists the streams to match the directions of theincident edges of the embedded waffle dual graph, while carefully avoiding collisions by
having k tracks for a degree-k vertex x. In the last twisting step, we rotate the embedded
floor polygon so that one edge normal does not require twisting, conceptually cut the disk
there, and look at the Tx − Sx annulus in polar view; then we make each connection frominside (pi ) to outside (qi ) in counterclockwise order, using the outermost unused track
for counterclockwise (leftward) connections and the innermost unused track for clockwise(rightward) connections. To make the streams C 1 and obtain positive clearance δ, we fillet
each corner of these streams, replacing each sharp corner by a circular arc of sufficient radius.
To guarantee that these disks are local to their corresponding nodes, we scale up the Tutte
embedding by a sufficient (but finite) factor.

6

Placing Sites

Given the output from the previous three steps (the tuck proxy T and parameter ε0 from
Section 3, a local squashing of waffle pockets from Section 4, and a stream placement from
Section 5), the next step of the algorithm computes a site placement: the final piece of
paper P , and a set of point, segment, and polygon sites on P . This site placement satisfies
several properties which we state in terms of their generalized Voronoi diagram. The Voronoi
diagram we use is in the geodesic vertex metric, which measures the geodesic (shortest-path)distance between a point of the paper and the nearest vertex of a site, viewing all sites asplanar obstacles that cannot be crossed (and thus must be routed around) by a shortest
path. Refer to Figure 11.

SoCG 2017

34:10

Origamizer: A Practical Algorithm for Folding Any Polyhedron
q1
≥δi

q6

q5

q4 q3 q2

q1

2δmax
2δmax

Rx

2δmax

Tx
Sx

2δmax
2δmax
δmax

Sx

p1

p6

p5

p4

p3

p2

360˚
r

s

s

p1
0˚

t
q1

q2

q3

2δmax

δmax

Rx

Sx

Sx Tx

p1
180˚

p2

p3
0˚

Figure 10 Attaching rivers to a facet of Q. Top: interior case. Bottom: boundary case. Left:filling disks Rx and Sx of radii rx < sx . Middle: filling the annulus Tx \ Sx of outer radius tx > sx .
Right: polar view.

(a) Geodesic vertex metric(b) Euclidean vertex metric(c) Euclidean metricFigure 11 The geodesic vertex metric and the resulting Voronoi diagram of point, segment,
and polygon sites, compared with the usual Euclidean metric (where we measure the minimum
distance to any point of a site) and an intermediate “Euclidean vertex metric” (where we measure
the minimum Euclidean distance to a vertex of a site).

The site placement requirements are the following:
1. The Voronoi diagram can be contracted into the waffle graph of T , i.e., the modified
dual of the Voronoi diagram is a supergraph of a subdivision of the waffle dual (Figure 3
middle). Thus each edge of the waffle dual is realized by a path of edges in the Voronoi
dual, and the corresponding waffle graph edges realize the corresponding Voronoi edges.
2. Each Voronoi edge is a straight segment which mirror-reflects its defining site vertices(avoiding cases like Figure 12(a), which can generally happen when using the geodesic
vertex metric). As shown in Figure 12(b), we obtain a mirror-reflected pair of triangles
or quadrangles called paired subcells, where a paired subcell is quadrangular if and only if
the Voronoi edge realizes a wall quadrangle.
3. Each Voronoi edge realizing an edge of the waffle graph must have subcell angles (formed
with the site) that are at least the bottom angles of the corresponding wall polygons.
4. Every point of the paper P is within ε0 (Euclidean) distance of a site vertex.

Erik D. Demaine and Tomohiro Tachi

34:11

triangular
Voronoi edge
quadrangular
Voronoi edge

subcellangleboundary of P
triangular paired subcell
quadrangular paired subcell

subcell angles

unpaired subcell
subcell angle(b) Paper comprises of subcells(a) Bad cases of Voronoi edge:
not triangular or quadrangular

Figure 12 Triangular and quadrangular edges, subcells, and subcell angles.

brooksriversab

point sitep=qsegment site
polygon site(c) Calabash

squashcore
flesh polygon
rind(a) Pumpkin

p

a

b

q
(b) Jack-O'-Lantern(d) Cucumber

Figure 13 Different types of squashes generated by the site placement algorithm: pumpkins
around brook nodes, jack-o’-lanterns around placed facets, calabashes along brooks, and cucumbers
along rivers.

To guarantee these properties of the Voronoi diagram of the placed sites, we also place acollection of (open set) planar regions called squashes, of four different types (see Figure 13):
pumpkins at brook nodes (points connecting multiple brooks), jack-o’-lanterns around placed
floor polygons, calabashes along brooks, and cucumbers along rivers. The sites defining asquash lie on the boundary of the squash. Within each squash, there is a core, which is partof the Voronoi diagram of the generating sites, and flesh polygons, which are mirror-reflected
triangles and quadrangles between sites and the core. We design so that the flesh polygons
have angles (against the sites) that are at least the bottom angles of corresponding wall
polygons.
A key property is that each squash is the continuous union of geodesic (open) disks
centered at points on the core and passing though the nearest vertices of the generatingsites. This property ensures that, if there are no other sites in the squash, then the core isguaranteed to be part of the global Voronoi diagram, and thus the flesh polygons will becontained in paired subcells. Thus the algorithm places sites and squashes tightly enough(so any point of P has distance at most ε0 to a site) while using the union of squashes as aprotective region in which we forbid placing any new sites. Specifically, the site-placement
algorithm consists of following three steps; refer to Figure 14.

SoCG 2017

34:12

Origamizer: A Practical Algorithm for Folding Any Polyhedron

1.

2.

3.

Figure 14 Site placement algorithm overview. 1. Adding sites at brook nodes and placed floor
faces. 2. Adding point sites along brooks and segment sites along rivers. 3. Filling stream bankswith point sites.

1. Node sites: Add a pumpkin at each brook node, and a jack-o’-lantern at each placed
floor polygon. The core of each pumpkin and jack-o’-lantern is exactly the cell of thelocal squashing of the corresponding waffle pocket.
2. Stream sites: Place a sequence of point sites along each brook, and calabashes between
consecutive pairs of placed point sites, such that the angle of each flesh polygon equals thebottom angle of the wall triangle of T corresponding to the brook. Place a sequence ofsegment sites along each river, and cucumbers between consecutive pairs of placed segmentsites, such that the angles of each flesh polygon equal the bottom angles of the wall
quadrangle of T corresponding to the river. Because streams are (thickened) line segments
and circular arcs, we can design calabashes and cucumbers to have mirror symmetry
between consecutive sites along each stream. If the gap between two consecutive sites is
too big, other streams (and thus stream sites) might intersect the squash. In this case,we subdivide by bisecting the gap, adding an additional site along the stream, whichconverges to squashes intersecting only the streams they belong to (by the smoothness
and positive clearance δ of streams obtained in Section 5). Also subdivide sufficiently sothat each point in the squash has distance at most 21 ε0 from the core.
3. Bank sites: Repeatedly add a point site wherever there is a point ε0 away from theclosest site. Here we use that squashes are contained in the Minkowski sum of each sitewith an ε0 -radius disk, so that this process terminates without placing sites on squashes.
We claim that the resulting site placement gives a Voronoi diagram that can contract tothe waffle graph of T . This claim follows because, for each stream following the modified
dual of the waffle graph of T , there is a sequence of sites that are adjacent to each otherthrough Voronoi edge containing the cores of calabashes or cucumbers, which are sandwichedby flesh triangles or quadrangles, respectively. In the Voronoi dual, such a sequence realizes
an edge of waffle dual. (Refer to the waffle graph correspondence in the middle of Figure 3.)
The piece of paper P is defined to be the convex hull of the paired subcells (within P 0 ), or
equivalently, the convex hull of the sites and the Voronoi diagram (clipped to P 0 ). Polygon P
differs only slightly from P 0 from the previous step, possibly removing “nonsubcell” portionsof P 0 near its vertices. There may still be regions of P that are not in any paired subcell,which we call unpaired subcells; see Figure 12(b). Unpaired subcells are all triangles, withtwo edges defined by legs of adjacent paired subcells and one edge defined by the boundaryof P .

7

Voronoi Folding

Given the tuck proxy T and the site placement from Section 6, the final step of the algorithm
computes a watertight seamless ε-extra folding of the piece of paper P into Q. In particular,

Erik D. Demaine and Tomohiro Tachi

34:13

Figure 15 Folding each Voronoi cell (left) into a pocket of an abstract waffle (middle). Each wallis double covered by a pair of mirror-reflected paired subcells as shown in the cross section (right).

the computed folding contains all facets of Q and lies on the tuck proxy T . We construct thefolding by a sequence of folding steps, where each folding step treats the folded image resulting
from previous steps as the “sheet of paper” to start from (never separating layers of paperthat have been brought together by previous steps). In fact, each folding step produces anabstract metric polyhedral complex called an abstract waffle, which is topologically equivalent
to a waffle and has an intrinsic metric for each floor and wall polygon. The last folding
step’s abstract waffle embeds directly on the tuck proxy, and thus we can realize the abstract
structure isometrically in 3D. Validity of each folding step guarantees a consistent layerordering in the final folded state (without paper crossing itself).
Initial folding step into abstract waffle: Define the graph G to consist of the following
edges: the Voronoi edge of every paired subcell (within P ) and the boundary edge of every
unpaired subcell. The initial folding step folds P into an abstract waffle A whose wafflegraph is G; refer to Figure 15. Specifically, for every Voronoi edge of G, the two paired
subcells of P (which are reflections of each other) fold onto each other to doubly cover thecorresponding wall polygon of A; and for every boundary edge of G, the unpaired subcell ofP fold to singly cover the corresponding wall polygon of A. This folding gives a consistent
metric to every wall polygon of the abstract waffle A. In particular, each cell of the Voronoi
diagram (within P ) becomes a pocket of A.
The floor polygons of A are the placed floor polygons in P . Because the Voronoi diagram
realizes the waffle graph of the tuck proxy T , the floor polygons in A are connected together
in the same way as the floor polygons in T . In other words, the floor of A is isometric to Q.
The remaining challenge is that A has excess wall polygons and also larger angles compared
to T . The main idea of the following steps is to remove excess wall triangles that do notrealize the waffle graph of T , reduce the bottom angles of walls realizing the waffle graph of T ,and then glue isometric walls together to have a simplified topology. Each of the following
folding steps involves folding one or two creases that radiate from a single floor vertex, sothey can easily be viewed as foldings of the 1D waffle graph, where edge lengths represent
bottom angles and each quadrangular edge is split into two subedges to represent its twobottom angles.
Contracting and merging nonrealizing edges: First we contract each edge of the Voronoi
diagram that does not realize an edge of the waffle graph of T (Figure 16 from left to middle).
Each edge contraction can be achieved by folding the corresponding wall triangle in half(along an angular bisector) and gluing it against an adjacent wall polygon, possibly wrapping

SoCG 2017

34:14

Origamizer: A Practical Algorithm for Folding Any Polyhedron

waffle graphContracting
non-realizing
edges

waffle dual

abstract waffle A

Bottom angle
adjustment& mergingtuck proxy T

Figure 16 The waffle graph of the abstract waffle, reduced to the waffle graph of the tuck proxy.

around the walls of the same pocket (Figure 17, (a) → (b) and (b) → (c)). If we ever
have multiple edges connecting the same two nodes, we can unify the angles to the smallest
angle by crimp folding the larger angles (Figure 17, (c) → (d)), making these multiple edges
isometric to each other, and thus the wall polygons can be stacked on top of each other. This
fused edge can be contracted again (Figure 17, (d) → (e)) to collapse a pocket. By applying
these folding steps to all edges not realizing the waffle graph of T , we obtain a simplified
waffle graph whose dual consists of just the paths of edges realizing each edge of the waffle
dual of T .
Merging realizing edges: Each dual path corresponds to a sequence of wall polygons that
represent the same edge in the waffle graph. To fuse them together, we crimp their bottom
angles to match the bottom angles of the corresponding wall polygons of T ; see Figure 18.
Once they have the same base angles, we can stack the wall polygons on top of each otherand regard them as a single wall polygon (Figure 16 from middle to right). Now each wall
polygon can be isometrically embedded into the corresponding wall polygon of T , which
gives the resulting folded state being a subset of T . Therefore, the final folded state f is thedesired ε-extra folding of Q.
Remaining desired properties: The seamless property follows because the floor polygons
are isometric to Q, and no other part of the paper folds strictly interior to any facetof Q. Watertightness follows by considering a point p moving along the boundary of P in
counterclockwise order and a point q moving along the boundary of Q in counterclockwiseorder. The correspondence between p and q is given by (1) if p is on a boundary site,then f (p) = q; and (2) if p is between two consecutive boundary sites, then q stays at thecorresponding vertex, which stays within distance ε from f (p).
References
1

Erik D. Demaine, Martin L. Demaine, and Joseph S. B. Mitchell. Folding flat silhouettes
and wrapping polyhedral packages: New results in computational origami. Computational

Erik D. Demaine and Tomohiro Tachi

(a)

(b)

34:15

(c)

(d)

(e)

Figure 17 Contraction in Voronoi diagram / deletion in Voronoi dual to form the waffle graph /waffle dual of the tuck proxy.

crimp foldbase angles
of tuck proxy

Figure 18 Angle adjustment to fit quadrangular wall of T .

2

3

4
5
6

7

8
9
10

Geometry: Theory and Applications, 16(1):3–21, 2000.
Erik D. Demaine, David Eppstein, Jeff Erickson, George W. Hart, and Joseph O’Rourke.
Vertex-unfolding of simplicial manifolds. In Discrete Geometry: In Honor of W. Kuperberg’s
60th Birthday, pages 215–228. Marcer Dekker Inc., 2003.
Erik D. Demaine, Sándor P. Fekete, and Robert J. Lang. Circle packing for origami design ishard. In Origami5 : Proceedings of the 5th International Conference on Origami in Science,
Mathematics and Education, pages 609–626. A K Peters, Singapore, July 2010.
Erik D. Demaine and Joseph O’Rourke. Geometric Folding Algorithms: Linkages, Origami,
Polyhedra. Cambridge University Press, July 2007.
Erik D. Demaine and Tomohiro Tachi. Origamizer: A practical algorithm for folding any
polyhedron. Manuscript, 2017. http://erikdemaine.org/papers/Origamizer/.
Robert J. Lang. A computational algorithm for origami design. In Proceedings of the 12th
Annual ACM Symposium on Computational Geometry, pages 98–105, Philadelphia, PA,
May 1996.
Robert J. Lang and Erik D. Demaine. Facet ordering and crease assignment in uniaxial
bases. In Origami4 : Proceedings of the 4th International Conference on Origami in Science,
Mathematics, and Education, Pasadena, California, September 2006.
Tomohiro Tachi. Software: Origamizer. http://www.tsg.ne.jp/TT/software/, 2008.
Tomohiro Tachi. Origamizing polyhedral surfaces. IEEE Transactions on Visualization
and Computer Graphics, 16(2):298–311, 2010.
W. T. Tutte. How to draw a graph. Proceedings of the London Mathematical Society,13:743–767, 1963.

SoCG 2017