Conference PaperPDF Available

# Origamizer: A Practical Algorithm for Folding Any Polyhedron

Authors:

## Abstract and Figures

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 the material 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 folding of 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 with boundary, 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 the second 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 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 of paper into a shape with an orthogonal projection equal to a scaled copy of a given metric tree. We use the term " efficient " because the method works well in practice, being the foundation for most modern origami design, but exact optimization of the scale factor (the usual measure of efficiency) is a difficult computational problem, recently shown NP-hard , but one that can be handled reasonably well by heuristics. The strip method  finds a *
Content may be subject to copyright.
Origamizer: A Practical Algorithm for Folding
Any Polyhedron
Erik D. Demaine1and Tomohiro Tachi2
1 MIT Computer Science and Artiﬁcial Intelligence Laboratory
32 Vassar St., Cambridge, MA 02139, USA
edemaine@mit.edu
2 Department of General Systems Studies, The University of Tokyo
3-8-1 Komaba, Meguro-Ku, Tokyo 153-8902, Japan
tachi@idea.c.u-tokyo.ac.jp
Abstract
It was established at SoCG’99 that every polyhedral complex can be folded from a suﬃciently
large square of paper, but the known algorithms are extremely impractical, wasting most of the
material 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 ﬂimsy
foldings in practice. We develop a new algorithm designed speciﬁcally for the practical folding
of 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 ﬁrst to
attain the watertight property: for a speciﬁed cutting of the manifold into a topological disk with
boundary, the folding maps the boundary of the paper to within εof the speciﬁed 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 the
second author, which has enabled practical folding of many complex polyhedral models such as
the Stanford bunny.
1998 ACM Subject Classiﬁcation F.2.2 Nonnumerical Algorithms and Problems
Keywords and phrases origami, folding, polyhedra, Voronoi diagram, computational geometry
Digital Object Identiﬁer 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
] ﬁnds an eﬃcient folding of a given square of
paper into a shape with an orthogonal projection equal to a scaled copy of a given metric
tree. We use the term “eﬃcient” because the method works well in practice, being the
foundation for most modern origami design, but exact optimization of the scale factor (the
usual measure of eﬃciency) is a diﬃcult computational problem, recently shown NP-hard
[
3
], but one that can be handled reasonably well by heuristics. The strip method [
1
] ﬁnds 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;
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 (any
connected 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 ineﬃciency 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 fold
arbitrary polyhedral complexes. On the other hand, we want to be able to optimize the scale
factor to ﬁnd eﬃcient and ideally practical foldings. The vision is that the origami designer
of the future uses 3D modeling software to design their target ﬁgure, 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 the
paper area makes up the actual surface of the target shape—about a 2:1 scale factor in each
dimension—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 ﬁnd a feasible solution, which makes it impossible to optimize
even locally. In this paper, we develop an Origamizer algorithm that is guaranteed to ﬁnd a
feasible folding, for any orientable polyhedral manifold. In fact, we describe a large family
of 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 ﬁnd 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 diﬃcult 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 eﬃcient as the existing Origamizer software, because the family of
foldings is broader, but now it is also guaranteed never to fail. We plan to implement this
provably 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 speciﬁcation 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 the
piece of paper (which can be any convex
polygon) maps to within Fréchet distance
ε
of the boundary of the polyhedral surface,
for a speciﬁed
ε >
0. Thus the rest of the
polyhedral surface must be covered entirely
by the interior of the paper. By contrast,
this property is violated violently in the strip
method [
1
], which places the boundary of
the paper on every face. Indeed, the lack
of the watertight property seems a natural
formalization of how the strip method felt
like “cheating”. Figure 2 shows a comparison.
Figure 2
Folding a surface with gaps like
the strip method (left) versus a watertight fold-
ing with some extra tiny facets like our method
(right). The paper boundary is drawn thick.
Because the paper is homeomorphic to a disk, disk surfaces are the best we could hope
to make watertight. Although we believe the watertight property is an essential feature of
what makes Origamizer’s foldings practical, it has one theoretical downside: it cannot fold
exactly 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 the
Gauss-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 Hausdorﬀ
distance at most
ε
from the polyhedral complex, for any speciﬁed
ε >
0. Furthermore, for
orientable polyhedral surfaces, the features can all be placed on one side. In the case of an
orientable 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 ﬁnd a convex polygon of paper
P
and a “watertight”, “seamless”,
ε
-extra folding” of
P
into a given “polyhedral manifold”
Q
.
2
We need to deﬁne the four
notions in quotes.
Apolyhedral 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 them
2
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 Polyhedron
orientable 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 speciﬁed sides, the clean side and the tuck side. For deﬁning 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 speciﬁed
boundary,
Q
, is a folded state of
P
(as deﬁned, 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 a
tuck-side
ε
oﬀset of
Q
, by unioning the portion of a radius-
ε
ball, centered at every point
of
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 image
of an
ε
-extra folding must lie entirely within the union of
Q
and its tuck-side
ε
oﬀset. In
particular, the Hausdorﬀ 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, this
condition 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 facet
of
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 eﬀective boundary of
P
)
that folds to a 3D curve having Fréchet distance at most
ε
to the closed loop of boundary
edges of
Q
, such that the folded image of the interior of
C
covers the interior of
Q
. In other
words, the exterior of
C
is extraneous to the folding, and every point on the folded
C
is
within distance
ε
of a corresponding point on the boundary of
Q
, where this correspondence
proceeds monotonically around both curves (according to some parameterization). In our
foldings, we will further guarantee that
C
is convex; indeed,
C
will be the boundary of the
piece of paper Poutput by our algorithm.
Overview.
Figure 3 gives a visual overview of the entire Origamizer algorithm. The
algorithm ﬁrst attaches
ε
-thin faces to the target polyhedral surface
Q
to form a target
folded structure called a waﬄe, eﬀectively splitting negative-curvature vertices into multiple
positive-curvature pockets of the waﬄe [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 waﬄe. To guide this process, the algorithm
ﬁrst draws streams (smooth constant-width channels) that connect together corresponding
edges and vertices of diﬀerent 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 waﬄe (not necessarily embedded in 3D) with
exactly one pocket for every Voronoi cell [Section 7]. The challenge is to choose sites deﬁning
the Voronoi diagram so that the resulting abstract waﬄe can be folded into the desired waﬄe.
The algorithm places one site at each squashed pocket, several sites along each stream, and
additional sites to ﬁll the rest of the paper [Section 6]. The resulting abstract waﬄe can
be folded into the desired waﬄe 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 ﬁgures 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
Polyhedral Surface Q
triangular
triangular
boundary
realizing triangular
not realizing triangular
boundary
§3: Tuck Proxy T
(waffle)
waffle dual
waffle graphfloor graph
modified
dual
'x
x'
y
y' [x',y']
(x,y)
*
x
y
^
e
Voronoi dual
§7: Voronoi diagram
'
^
e' *
^
modified
dual
P
§6: Site Placement
§7: Folding to Abstract Waffle §7: Final Folding f(P) T
crimp folding
Waffle Pockets
floor vertex v
wall triangle wi
floor face f
bottom angles
§5: Stream Placement
brook node
boundary river cap
§4: Local Squashing
of Pockets
cell
cell perpendicular
P
Voronoi diagram in geodesic vertex metric

brooks (vertex stream)
rivers (edge stream)
stream banks
core
point site
segment site
polygon site
P'
waffle graph correspondance
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 floor graph waffle dual
boundary nodes
waffle graph
Figure 4
A waﬄe, the waﬄe graph, and the waﬄe dual. Wall faces are red; ﬂoor faces are grey.
3 Tuck Proxy and Waﬄes
Given the target polyhedral manifold
Q
, the ﬁrst step of the algorithm computes a “tuck
proxy”
T
, which is a special type of “polyhedral waﬄe”. 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 waﬄe consists of ﬂoor polygons, which
together form a topological disk, and wal l polygons—wall quadrangles glued along ﬂoor
edges, and wall triangles glued at ﬂoor vertices. The top edges of the wall polygons, opposite
their attachment to their ﬂoor, must form an edge-2-connected planar graph called the waﬄe
graph; refer to Figure 4. The waﬄe dual is the “modiﬁed dual” of the waﬄe graph. Roughly
speaking, the modiﬁed 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 ﬂoor polygons must be exactly the facets of
Q
. Any single ﬂoor
vertex, ﬂoor edge, or ﬂoor polygon, together with its incident wall polygons, must form a
polyhedral manifold homeomorphic to a disk (called a waﬄe pocket) that is intrinsically
convex, 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
the algorithm outputs a parameter
ε0
with 0
< ε0< ε
that lower bounds how far the tuck
proxy 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 reﬂex dihedral angle into two convex dihedral angles. This
consequence is the key to how we guarantee that the waﬄe pockets are intrinsically convex.
We then connect these edge oﬀsets around each vertex of
Q
, which is equivalent to drawing
a connected graph on a small sphere around the vertex. We ﬁrst connect these oﬀsets by a
cycle on the sphere. The pocket formed by the ﬂoor polygon, two oﬀset edges, and one edge
of 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 oﬀset and the ﬂoor. Then, to make
the remaining pocket intrinsically convex, we subdivide the cycle by overlaying a regular
tetrahedron and triangulating (if necessary). The resulting faces have edge lengths of at
most 109.5, so perimeter at most 328.5<360.
4 Waﬄe Pocket Squashing
Given the tuck proxy
T
and parameter
ε0
, the next step of the algorithm computes a local
squashing of each waﬄe pocket of the tuck proxy. Roughly speaking, local squashing consists
of adding material between polygons in the waﬄe pocket until they lie ﬂat and nonoverlapping
Erik D. Demaine and Tomohiro Tachi 34:7
overlay
tetrahedron
triangulate
(if necessary)
min distance is
determined by
depth of edge tuck
inset
offset wall
inset
offset wall
waffle pocket
floor polygon
floor vertex
wall triangle
Boundary Vertex
Interior Vertex
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 a
vertex; Middle: planar projection of behavior on the sphere; and Bottom: broader 3D view, around
an edge and its two endpoints (left) and actual tuck proxy around the vertex (right).
in the plane. More formally, a local squashing draws each ﬂoor and wall polygon of the waﬄe
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 no
angular gaps between polygons at ﬂoor vertices, keeping the squashed wall polygons within
ε0
of the ﬂoor vertex/polygon, and preserving the cyclic order of the wall polygons around
the ﬂoor 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 ﬂoor vertex/polygon.
Figures 6 and 7 illustrate the two cases of this step of the algorithm, which get applied
to all waﬄe pockets of the tuck proxy corresponding to ﬂoor vertices and ﬂoor polygons,
respectively. The algorithm ﬁrst vertex-unfolds [
2
] the wall polygons into the plane, leaving
angular gaps evenly distributed between squashed wall polygons. We then place rays for each
gap from the vertex, such that consecutive rays sandwich the squashed wall polygons and
form an angle strictly less than 180
. (Speciﬁcally, each ray is the angular bisector between
the angular bisectors of two consecutive squashed wall polygons, possibly rounded to one of
those wall polygon’s boundaries.) We connect the intersection of the rays with a smooth
convex curve (for the ﬂoor vertex case, a circle; and for the ﬂoor polygon case, the oﬀset of
SoCG 2017
34:8 Origamizer: A Practical Algorithm for Folding Any Polyhedron
Figure 6 Local squashing algorithm for a waﬄe pocket corresponding to a ﬂoor vertex.
Figure 7 Local squashing algorithm for a waﬄe pocket corresponding a ﬂoor polygon.
the ﬂoor polygon smoothed at the corner with quadratic Bézier curve), placed close enough
to and surrounding the ﬂoor 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 oﬀset curve to intersect the rays, wall quadrangles attached
to a ﬂoor polygon squash into trapezoids.
5 Placing Streams
Given the tuck proxy
T
, parameter
ε0
, and a local squashing of its waﬄe pockets, the next
step of the algorithm computes a stream placement, which consists of a convex polygon
P0
and a mapping from various features of the waﬄe dual into geometric structures drawn
on
P0
. Roughly speaking, each waﬄe dual node maps to either a point in
P0
(for a waﬄe
pocket corresponding to a ﬂoor vertex) or an isometric embedding of a facet of
Q
in
P0
(for a waﬄe pocket corresponding to that ﬂoor polygon); and each waﬄe dual edge maps
to a stream—a
C1
curve consisting of line segments and circular arcs, possibly thickened
orthogonally. Speciﬁcally, if the waﬄe dual edge corresponds to a wall quadrangle, then
the stream connects two equal-length edges of the placed ﬂoor polygons, and the stream is
thickened by an amount equal to that common edge length, forming a river (as in [
6
,
7
]).
On the other hand, if the waﬄe dual edge corresponds to a wall triangle, then the stream
connects two points, either placed ﬂoor vertices or vertices of placed ﬂoor polygons, and the
stream has zero thickness, forming a brook.
This step of the algorithm also outputs a number
δ >
0that is a lower bound on the
“clearance” of the output structures, that is, the critical radius at which a disk Minkowski-
summed with the structures causes a collision event. This lower bound is important for
bounding the number of creases in the ultimate Origamizer design.
This step of the algorithm consists of two major parts. In the ﬁrst part, we embed the
Erik D. Demaine and Tomohiro Tachi 34:9
p
p
P'
boundary brook node
start direction
boundary river cap
Figure 8
Left: Tutte embedding with out-
side face
p
. Right: Construction of start ray
and convex polygon P0.
Tx
Sx
x y
Sy
Ty
Figure 9
Connecting two embedded waﬄe dual
nodes xand ywith a river.
waﬄe dual in the plane using a Tutte embedding [
10
], and construct a convex polygon
P0
so
that the boundary nodes lie on the boundary of
P0
; 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
P0
, to its desired width, without leaving that edge of
P0
and
without intersecting other boundary nodes.
In the second part, we place ﬂoor vertices and polygons at the nodes of the embedded
waﬄe dual graph, and connect them by rivers and brooks, respectively, along the edges of
the embedded graph; see Figure 9. The main challenge is that the directions of the edges of
the embedded waﬄe dual graph do not (in general) match the start directions of the streams
deﬁned by the cell perpendiculars of the local squashing. We construct a local structure
around each embedded waﬄe dual node to adjust these directions without self-intersection.
Speciﬁcally, this local structure consists of three nested disks, centered at each waﬄe dual
node
x
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 the
sx
disk
Sx
bends the streams to meet the disk boundary
tx
disk
Tx
twists the streams to match the directions of the
incident edges of the embedded waﬄe 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
ﬂoor polygon so that one edge normal does not require twisting, conceptually cut the disk
there, and look at the
TxSx
annulus in polar view; then we make each connection from
inside (
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
C1
and obtain positive clearance
δ
, we ﬁllet
each corner of these streams, replacing each sharp corner by a circular arc of suﬃcient radius.
To guarantee that these disks are local to their corresponding nodes, we scale up the Tutte
embedding by a suﬃcient (but ﬁnite) 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 waﬄe pockets from Section 4, and a stream placement from
Section 5), the next step of the algorithm computes a site placement: the ﬁnal piece of
paper P, and a set of point, segment, and polygon sites on P. This site placement satisﬁes
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 as
planar 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
≥δi
sr ts
RxSx
Sx
Tx
SxTx
Sx
Rx
q1q2
q3
q4
q5
q6q1
p1p2
p3
p4
p5
p6p1
0˚360˚
q1q2q3
p1p2p3
0˚180˚
δmax
max
δmax
max
max
max
max
max
Figure 10
Attaching rivers to a facet of
Q
. Top: interior case. Bottom: boundary case. Left:
ﬁlling disks
Rx
and
Sx
rx< sx
. Middle: ﬁlling the annulus
Tx\Sx
tx> sx
.
Right: polar view.
(a) Geodesic vertex metric (b) Euclidean vertex metric (c) Euclidean metric
Figure 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 waﬄe graph of
T
, i.e., the modiﬁed
dual of the Voronoi diagram is a supergraph of a subdivision of the waﬄe dual (Figure 3
middle). Thus each edge of the waﬄe dual is realized by a path of edges in the Voronoi
dual, and the corresponding waﬄe graph edges realize the corresponding Voronoi edges.
2.
Each Voronoi edge is a straight segment which mirror-reﬂects its deﬁning 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-reﬂected 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 waﬄe 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 Pis within ε0(Euclidean) distance of a site vertex.
Erik D. Demaine and Tomohiro Tachi 34:11
(a) Bad cases of Voronoi edge:
not triangular or quadrangular (b) Paper comprises of subcells
triangular
Voronoi edge
Voronoi edge
boundary of P
triangular paired subcell
unpaired subcell
subcell
angle
subcell angle
subcell angles
Figure 12 Triangular and quadrangular edges, subcells, and subcell angles.
brooks
core
squash
rind
point site
rivers
segment site
polygon site
flesh polygon
(a) Pumpkin
(b) Jack-O'-Lantern
(c) Calabash
a
p=q
b
(d) Cucumber
p
a b
q
Figure 13
Diﬀerent 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 a
collection of (open set) planar regions called squashes, of four diﬀerent types (see Figure 13):
pumpkins at brook nodes (points connecting multiple brooks), jack-o’-lanterns around placed
ﬂoor polygons, calabashes along brooks, and cucumbers along rivers. The sites deﬁning a
squash lie on the boundary of the squash. Within each squash, there is a core, which is part
of the Voronoi diagram of the generating sites, and ﬂesh polygons, which are mirror-reﬂected
triangles and quadrangles between sites and the core. We design so that the ﬂesh 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 generating
sites. This property ensures that, if there are no other sites in the squash, then the core is
guaranteed to be part of the global Voronoi diagram, and thus the ﬂesh polygons will be
contained 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 a
protective region in which we forbid placing any new sites. Speciﬁcally, 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 ﬂoor
faces. 2. Adding point sites along brooks and segment sites along rivers. 3. Filling stream banks
with point sites.
1. Node sites:
Add a pumpkin at each brook node, and a jack-o’-lantern at each placed
ﬂoor polygon. The core of each pumpkin and jack-o’-lantern is exactly the cell of the
local squashing of the corresponding waﬄe 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 ﬂesh polygon equals the
bottom angle of the wall triangle of
T
corresponding to the brook. Place a sequence of
segment sites along each river, and cucumbers between consecutive pairs of placed segment
sites, such that the angles of each ﬂesh polygon equal the bottom angles of the wall
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, which
converges to squashes intersecting only the streams they belong to (by the smoothness
and positive clearance
δ
of streams obtained in Section 5). Also subdivide suﬃciently so
that each point in the squash has distance at most 1
2ε0from the core.
3. Bank sites:
Repeatedly add a point site wherever there is a point
ε0
away from the
closest site. Here we use that squashes are contained in the Minkowski sum of each site
with 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 to
the waﬄe graph of
T
. This claim follows because, for each stream following the modiﬁed
dual of the waﬄe graph of
T
, there is a sequence of sites that are adjacent to each other
through Voronoi edge containing the cores of calabashes or cucumbers, which are sandwiched
by ﬂesh triangles or quadrangles, respectively. In the Voronoi dual, such a sequence realizes
an edge of waﬄe dual. (Refer to the waﬄe graph correspondence in the middle of Figure 3.)
The piece of paper
P
is deﬁned to be the convex hull of the paired subcells (within
P0
), or
equivalently, the convex hull of the sites and the Voronoi diagram (clipped to
P0
). Polygon
P
diﬀers only slightly from
P0
from the previous step, possibly removing “nonsubcell” portions
of
P0
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, with
two edges deﬁned by legs of adjacent paired subcells and one edge deﬁned by the boundary
of P.
7 Voronoi Folding
Given the tuck proxy
T
and the site placement from Section 6, the ﬁnal 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 waﬄe (middle). Each wall
is double covered by a pair of mirror-reﬂected 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 the
folding 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 paper
that have been brought together by previous steps). In fact, each folding step produces an
abstract metric polyhedral complex called an abstract waﬄe, which is topologically equivalent
to a waﬄe and has an intrinsic metric for each ﬂoor and wall polygon. The last folding
step’s abstract waﬄe 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 layer
ordering in the ﬁnal folded state (without paper crossing itself).
Initial folding step into abstract waﬄe:
Deﬁne 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 waﬄe
A
whose waﬄe
graph is
G
; refer to Figure 15. Speciﬁcally, for every Voronoi edge of
G
, the two paired
subcells of
P
(which are reﬂections of each other) fold onto each other to doubly cover the
corresponding wall polygon of
A
; and for every boundary edge of
G
, the unpaired subcell of
P
fold to singly cover the corresponding wall polygon of
A
. This folding gives a consistent
metric to every wall polygon of the abstract waﬄe
A
. In particular, each cell of the Voronoi
diagram (within P) becomes a pocket of A.
The ﬂoor polygons of
A
are the placed ﬂoor polygons in
P
. Because the Voronoi diagram
realizes the waﬄe graph of the tuck proxy
T
, the ﬂoor polygons in
A
are connected together
in the same way as the ﬂoor polygons in
T
. In other words, the ﬂoor 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 not
realize the waﬄe graph of
T
, reduce the bottom angles of walls realizing the waﬄe graph of
T
,
and then glue isometric walls together to have a simpliﬁed topology. Each of the following
folding steps involves folding one or two creases that radiate from a single ﬂoor vertex, so
they can easily be viewed as foldings of the 1D waﬄe graph, where edge lengths represent
bottom angles and each quadrangular edge is split into two subedges to represent its two
bottom angles.
Contracting and merging nonrealizing edges:
First we contract each edge of the Voronoi
diagram that does not realize an edge of the waﬄe 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 dual
waffle graph
abstract waffle A
Contracting
non-realizing
edges
Bottom angle
& merging
tuck proxy T
Figure 16
The waﬄe graph of the abstract waﬄe, reduced to the waﬄe 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 waﬄe graph of
T
, we obtain a simpliﬁed
waﬄe graph whose dual consists of just the paths of edges realizing each edge of the waﬄe
dual of T.
Merging realizing edges:
Each dual path corresponds to a sequence of wall polygons that
represent the same edge in the waﬄe 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 other
and 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 ﬁnal folded state
f
is the
desired ε-extra folding of Q.
Remaining desired properties:
The seamless property follows because the ﬂoor polygons
are isometric to
Q
, and no other part of the paper folds strictly interior to any facet
of
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 counterclockwise
order. 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 the
corresponding vertex, which stays within distance εfrom f(p).
References
1Erik D. Demaine, Martin L. Demaine, and Joseph S. B. Mitchell. Folding ﬂat silhouettes
and wrapping polyhedral packages: New results in computational origami. Computational
Erik D. Demaine and Tomohiro Tachi 34:15
(b)(a) (c) (d) (e)
Figure 17
Contraction in Voronoi diagram / deletion in Voronoi dual to form the waﬄe graph /
waﬄe dual of the tuck proxy.
base angles
of tuck proxy
crimp fold
Geometry: Theory and Applications, 16(1):3–21, 2000.
2Erik D. Demaine, David Eppstein, Jeﬀ 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.
3Erik D. Demaine, Sándor P. Fekete, and Robert J. Lang. Circle packing for origami design is
hard. In Origami5: Proceedings of the 5th International Conference on Origami in Science,
Mathematics and Education, pages 609–626. A K Peters, Singapore, July 2010.
4Erik D. Demaine and Joseph O’Rourke. Geometric Folding Algorithms: Linkages, Origami,
Polyhedra. Cambridge University Press, July 2007.
5Erik D. Demaine and Tomohiro Tachi. Origamizer: A practical algorithm for folding any
polyhedron. Manuscript, 2017. http://erikdemaine.org/papers/Origamizer/.
6Robert 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.
7Robert 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.
8Tomohiro Tachi. Software: Origamizer. http://www.tsg.ne.jp/TT/software/, 2008.
9Tomohiro Tachi. Origamizing polyhedral surfaces. IEEE Transactions on Visualization
and Computer Graphics, 16(2):298–311, 2010.
10 W. T. Tutte. How to draw a graph. Proceedings of the London Mathematical Society,
13:743–767, 1963.
SoCG 2017