Академический Документы
Профессиональный Документы
Культура Документы
Corso di Laurea
Informatica
Improving ORIPA
An Origami pattern CAD editor in Java
Supervisore Laureando
1 Introduction 2
2 Origami Geometry 3
2.1 SE&C Constructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Origami Constructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Comparison/Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Flat-Folding 8
3.1 Local Flat-Folding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Global Flat-Folding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Improving ORIPA 14
5.1 Minor Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2 Underlying Triangular Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.3 Kawasaki-Maekawa Vertex Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Future Work 21
Bibliography 22
1
Chapter 1
Introduction
One of my passions is Origami (折り紙), the Japanese-born technique/art of creating every kind of
figure just by folding a piece of paper, with no cuts nor glue.
The mathematics of paperfolding had been studied deeply in the past few decades, and an origami
geometry had been well defined, with peculiar characteristics which make its constructions different
(and somewhat “more powerful”) than the classic so-called “Euclidean” (or SE&C, i.e. “straight-edge-
and-compass”) ones.
ORIPA is an origami-pattern-editor CAD system written in Java by professor Jun Mitani, and imple-
ments a number of origami geometry constructions for drawing the crease pattern (the inner structure
of creases of an origami figure), checking it for flat-foldability, and computing a preview of the folded
shape if it is flat-foldable.
I have been using this open-source software for designing a great number of original projects, and
discovered that it lacks some useful features as well as a few interesting origami constructions.
Therefore this was the aim for putting my hands on its code and working on it. In particular, I added
a few features to this software, as an underlying triangular grid providing useful reference points for
inputting new lines, and a new command for flattening a vertex missing a single crease line, as well as
a few minor changes. Understanding the program structure and the working of its existing features
was perhaps the biggest challenge, due to the complexity of the software itself, but I was helped in this
by some knowledge of the mathematical theory of origami and my explorations of origami geometry
by using ORIPA for designing new origami models.
2
Chapter 2
Origami Geometry
Origami is the technique/art of constructing shapes just by folding paper. It probably dates back to
the invention of paper in ancient China, and developed in Japan after this material was imported there
by a Buddhist monk. It also had a parallel development in Europe, and particularly in Spain, due to
the introduction of paper by the Moors, therefore we have traditional origami figures belonging either
to the Eastern or the Western tradition, with strong differences in both their shapes and structures.
Anyway, the traditional figures were just a few hundreds, transmitted directly from person to person,
and in the Eastern world they had associated ritual meanings. The actual richness of unbelievable
origami figures, elaborate techniques, and origami designers began less than one century ago, and it all
started from Akira Yoshizawa and a few other Japaneses. Yoshizawa (1911-2005) has been considered
to be the father of modern origami, as he was among the first persons realizing that it was possible to
design new figures using origami, instead of reproducing the few stylized centuries-old ones. He also
invented a graphic system to share his designs, which was then improved by a few Westerns in the
60’s and is still the most widely used. He developed folding techniques, designed thousands of figures
and popularized origami around the world. On his influence, several new people in different countries
got started with origami, and then the first societies grouping these origami enthusiasts were founded,
spreading this technique and art form even further. Nowadays there are countless origami designers
spread around the world, almost in every country, creating new figures everyday.
Meanwhile, origamists developed techniques (and even algorithms) allowing them to create more elab-
orate, detailed and realistic figures, and the uses of origami in different areas became of great interest,
increasing the study of its connections with the Sciences, Mathematics and Education. The use of
origami in education dates back to the Fröbel theories, developed in Germany and then introduced in
Japan with his “kindergarten” system.
Some connections between paperfolding and mathematics also dates back to the late XIX century (see
[26]), and most notably, during the 30’s, an Italian called Margherita Piazzolla Beloch showed for the
first time that paperfolding could solve 3rd degree equations (see [12]).
As the interest increased, Humiaki Huzita, a Japanese living in Italy, organized the “First Interna-
tional Meeting of Origami Science and Technology” in 1989 in Ferrara, Italy (see [12]), followed by the
“Second International Meeting of Origami Science and Scientific Origami”, chaired by Koryo Miura,
held in 1994 in Otsu, Japan (see [25]). This meetings expanded and were named OSME (standing
for Origami Science, Mathematics, and Education), and they took place every 4-5 years (3OSME
organized by Thomas Hull in 2001 in Asilomar, California [9]; 4OSME organized by Robert J. Lang
in 2006 in Pasadena, California [21]; 5OSME organized by Eileen Tan, Benjamin Tan, and Patsy
Wang-Iverson in 2010 in Singapore [27]; 6OSME held in 2014 in Tokyo, Japan [1]).
This all led to many advanced researches in these fields, as algorithms for origami design (see e.g. [20]),
the demonstration of NP-completeness of origami simulations [4], and a rich study on rigid origami
(most notably by Tomohiro Tachi) and its applications to engineering fields (see [5]).
3
2.1 SE&C Constructions
The usual mean to perform geometric constructions in the Euclidean plane is by using two tools, a
straight edge (unmarked ruler) and a compass, using only one of them at each step to draw either a
line or a circle. However, this is not the only method for performing such constructions: several other
construction systems, with different tools, are possible, allowing for different results, and origami is
one of them. The SE&C (straight-edge-and-compass) construction system is so far the most widely
used, and therefore its procedures are commonly called “Euclidean” constructions (and even, wrongly,
“Euclidean geometry”, which is actually a different concept).
We abstract our situation by considering the plane on which we are working on, to be infinite.
This system assumes that every object that we construct, i.e. a circle or a line, or the plane itself,
is thought as a set of points, and knowing the entire set implies knowledge of each of its elements.
Therefore we can pick a “random” point of the plane to start with, or a point on a line or circle,
without the need of specific procedures to do so. In this way points can be said to be primal in this
system, in contrast to what happens in the origami system.
(E1) Given two non-identical points 𝑃 and 𝑄, one can draw the unique straight line 𝑙 = 𝑃 𝑄 containing
both points, using the straight-edge.
(E2) Given a point 𝑀 and the length of a line segment 𝑟 > 0, one can draw the unique circle
𝑐 = {𝑀 ; 𝑟} with 𝑀 as center and 𝑟 as radius, using the compass.
(E3) Given two non-parallel straight lines 𝑙1 and 𝑙2 , one can determine their unique point of inter-
section 𝑃 = 𝑙1 ∩ 𝑙2 .
(E4) Given a circle 𝑐 = {𝑀 ; 𝑟} and a straight line 𝑙, such that the distance between 𝑀 and 𝑙 is not
greater than 𝑟, one can determine the point(s) of intersection of 𝑐 and 𝑙.
(E5) Given two circles 𝑐1 = {𝑀1 ; 𝑟1 } and 𝑐2 = {𝑀2 ; 𝑟2 }, such that either
1. neither circle contains the center of the other in its interior, and the distance between the
centers is not greater than the sum of the radii, or
2. one circle contains the center of the other in its interior, and the distance between the
centers is not less than the difference of the radii,
These five simple procedures are really all what can be done with the tools we are considering, but
they allow for a seemingly endless variety of possible constructions. A specific geometric construction
problem is said to be “solvable” by Euclidean methods, if its solution can be constructed by the
iterated applications of (𝐸1)-(𝐸5) exclusively. Anyway, it is now known that this system can solve
“just” the problems up to degree two, and that some famous geometric problems such us constructing
a cubic root, trisecting an angle or squaring a circle had been proven to be impossible using these
tools only, after mathematicians sought after them for centuries.
4
symmetry line has been folded, but can also be done using the procedures we are going to define.
Then, in origami, the basic geometric entity is the line, in the form of a crease, instead of the point,
because points do not exist by themselves as in the Euclidean procedures, but only as the intersection
of two lines.
To start with, we assume that a straight line can be folded randomly anywhere on the plane, just as
a point can be drawn randomly anywhere on the plane.
Definition 2. The elementary Origami procedures are the following (see Figure 2.1):
(O1) Given two non-parallel straight lines 𝑙1 and 𝑙2 , one can determine their unique point of inter-
section 𝑃 = 𝑙1 ∩ 𝑙2 .
(O2) Given two straight lines 𝑙1 and 𝑙2 , one can fold line 𝑙1 to lie on line 𝑙2 , obtaining:
1. the fold line 𝑚 parallel to and equidistant from them, if 𝑙1 and 𝑙2 are parallel, or
2. their angle bisectors 𝑎 and 𝑎′ , if 𝑙1 and 𝑙2 are intersecting.
(O3) Given two non-identical points 𝑃 and 𝑄, one can fold the unique perpendicular bisector 𝑏 of
the line segment 𝑃 𝑄, by placing 𝑃 onto 𝑄.
(O4) Given two non-identical points 𝑃 and 𝑄, one can fold the unique straight line 𝑙 = 𝑃 𝑄 connecting
both points.
(O5) Given a point 𝑃 and a straight line 𝑙, one can fold the unique line 𝑙′ perpendicular to 𝑙 and
containing 𝑃 .
(O6) Given two non-identical points 𝑃 and 𝑄 and a straight line 𝑙, such that the distance between
the two points is not greater than the distance between 𝑄 and 𝑙, one can fold the line(s) which
places 𝑃 onto 𝑙 and passes through 𝑄. Such a line is the tangent to the parabola having focus
𝑃 and directrix 𝑙, and containing 𝑄 (see Figure 2.2, and [11, ch. 4]).
(O7) Given one point 𝑃 and two non-identical, non-parallel straight lines 𝑙 and 𝑚, one can fold the
unique line that places 𝑃 onto 𝑙 and that is perpendicular to 𝑚.
(O8) Given two (possibly identical) points 𝑃 and 𝑄 and two (possibly identical) lines 𝑙 and 𝑚, one can
fold the line(s) that places at the same time 𝑃 onto 𝑙 and 𝑄 onto 𝑚. Such a line is the common
tangent to two parabolas 𝑝1 and 𝑝2 with foci 𝑃 and 𝑄 and directrices 𝑙 and 𝑚, respectively (see
Figure 2.3).
5
Figure 2.2: Origami procedure (𝑂6). The green lines are the 2 creases passing through 𝑄 and placing
the focus 𝑃 onto the directrix 𝑙, on points 𝑃 ′ and 𝑃 ′′ , respectively.
With no instruments at all for origami constructions, its basic procedures are richer than the
Euclidean ones. In particular, procedure (𝑂8) solves an equation of degree 3, and it can be exploited
for folding a cubic root or the trisection of an angle.
Anyway, these 8 procedures are not linearly independent, and Koshiro Hatori showed in [7] that
procedures (𝑂1) and (𝑂8) suffices, since all the other procedures can be considered special cases of
(𝑂8) when the two points or the two lines coincide, or 𝑃 and/or 𝑄 belongs to 𝑙 and/or 𝑚.
For more on origami procedures, see [6], [11], [13], [14], [19].
2.3 Comparison/Results
It is easy to show that origami procedures can mimic the five Euclidean ones, constructing the same
points and lines, assuming that drawing a circle (𝐸2) is equivalent to knowing all its points. On the
contrary, Euclidean procedures can mimic all origami ones, except for (𝑂8).
It turns out that origami constructions are more powerful than Euclidean ones, because the set of points
6
constructible using origami procedures is richer than the set of points constructible with SE&C, as
the former includes the solutions to 3rd-degree equations which the latter does not.
Moreover, it was shown (by Roger C. Alperin and Robert J. Lang, in an article in [21]) that allowing
the use of procedures that create more than one single crease at the same time, the field of origami-
constructible points can be extended much further, including the solutions of higher degree equations.
7
Chapter 3
Flat-Folding
Now we need to understand under which circumstances an origami model can be folded flat, but first
we need a representation of our planned model.
Now look at a single crease: it divides our sheet in two faces, and while folding it, one of the faces
will be reflected along the crease line. When the reflection reaches ±𝜋 (according to whether we folded
our crease as a valley or mountain fold), the moving face lies above (or below) the other face, which
virtually did not move during this process. Therefore each crease will perform a (positive or negative)
𝜋-reflection of one of its connected faces.
All these definitions will be especially needed for studying global flat-folding.
Theorem 1 (Maekawa-Justin theorem). Let 𝑀 denote the number of mountain folds, and 𝑉 the
number of valley folds around the single vertex. Then,
|𝑀 − 𝑉 | = 2 (3.1)
It follows that every internal vertex in a flat-foldable crease pattern has even degree, and that
every such crease pattern is 2 face-colorable ([8], [10], [11]).
Theorem 2 (Kawasaki-Justin theorem (1)). The sum of alternate angles about the vertex is 𝜋.
Let 𝛼1 , 𝛼2 , . . . , 𝛼2𝑛 , be the consecutive angles around the single vertex, then
or, equivalently
𝛼1 − 𝛼2 + 𝛼3 − · · · + 𝛼2𝑛−1 − 𝛼2𝑛 = 0 (3.3)
8
It follows that every angle at an internal vertex must be smaller than 𝜋, and therefore the c-faces
must be convex.
Moreover:
This means that the condition in Theorem 2 is sufficient for the vertex in question being flat-
foldable.
Alternatively, the same condition can be stated as:
Theorem 4 (Kawasaki-Justin theorem (3): Isometries condition). Let 𝜎1 , 𝜎2 , . . . , 𝜎2𝑛 be the reflec-
tions associated with the 2𝑛 creases around the single vertex. Then,
2𝑛
∏︁
𝜎𝑖 = 𝜎1 ∘ 𝜎2 ∘ · · · ∘ 𝜎2𝑛 = 𝐼𝑑 (3.4)
𝑖=1
Theorem 5 (Big-Little-Big angle theorem). Suppose that around our vertex we have a sequence of
consecutive angles 𝛼𝑖−1 , 𝛼𝑖 , 𝛼𝑖+1 , such that 𝛼𝑖−1 > 𝛼𝑖 and 𝛼𝑖+1 > 𝛼𝑖 . Then the two crease lines in
between these three angles cannot have the same M-V parity.
This is easy to prove, and it introduces a problem with which we will have to deal in the next
section. Suppose these two creases can have the same parity, then we have a small angle-flap in
between two bigger angle-flaps. Since the M-V parity is the same, the two big ones must be both
folded either in front or behind the small one. Then, they would lie flat only if they were allowed to
self-intersect each other, which in our physical world is not possible without breaking the paper.
Theorem 6 (Isometries condition (Kawasaki-Justin)). For every single closed path on the crease
pattern, that avoids the vertices, let 𝜎1 , 𝜎2 , . . . , 𝜎𝑛 be the reflections associated with the 𝑛 creases
crossed by the path. Then,
𝑛
∏︁
𝜎𝑖 = 𝜎1 ∘ 𝜎2 ∘ · · · ∘ 𝜎𝑛 = 𝐼𝑑 (3.5)
𝑖=1
That is, the isometries condition 3.4 stated before for single-vertex folding, holds in the general
case for every (simple) closed path traversing the crease pattern avoiding the nodes. It follows that
any such path crosses an even number of creases, and that the c-faces are partitioned in two-classes,
the positive and the negative ones, according to whether the face is turned over in the folded model
or not (and therefore, the crease pattern is 2 face-colorable, representing such two classes).
Whenever the condition 3.5 is satisfied, the CP is said to be semi-foldable. Then, let 𝑆 be our sheet
with such a c-net foldable in the plane Π. Choose a single c-face 𝐹1 and fold the c-net letting 𝐹1
fixed. Then there is a continuous mapping 𝜇 : 𝑆 → Π such that the position of any point 𝐴 of 𝑆 after
folding is 𝜇(𝐴). Let 𝐹 be any c-face and consider a path from 𝐹1 to 𝐹 avoiding the nodes. Then, the
position of 𝐹 after folding is given by the isometry 𝜎1 ∘ 𝜎2 ∘ · · · ∘ 𝜎𝑡 , where 𝜎𝑖 is the reflection associated
with the crease 𝑐𝑖 crossed by the path. Therefore this gives the rules for computing a preview of the
9
folded model, given a semi-foldable CP.
For an origami design, described by its crease pattern, to be really foldable in practice, another
property must hold: the non-crossing condition. This means that two layers of paper (two faces)
cannot self-intersect each other, or the paper should get broken to allow its folding. More precisely,
the superposition order of two different c-faces must be preserved along their whole surfaces after
folding, and two c-faces that are adjacent along a crease, must be consecutive (stacked one just in
front of the other) after folding, with no other face in between them extending further over that crease.
It was shown by Marshall Bern and Barry Hayes (in [4]) that the problem of verifying this property
is NP -complete, and therefore intractable. Hence we will deal (mainly) with semi-foldable origami in
our further study, according to our previous definitions.
10
Chapter 4
ORIPA is a drawing software dedicated to designing origami crease patterns. It implements a number
of origami and drawing procedures, and its unique feature is the prediction of the folded shape from
the drawn CP.
It is a desktop application, written in Java by professor Jun Mitani, from the University of Tsukuba,
Japan, aiming at contributing toward future studies on Origami. The first version was released in
2005, and in 2012 its source code was released as Open Source (see [23]). Since then, a modified
version of ORIPA is maintained on GitHub by Ouchi Koji (see [18]).
11
1. the segment connecting two points (𝑂4);
5. the three segments connecting the incenter of a triangle with its three vertices (by constructing
the angle bisectors of its 3 internal angles);
7. given two segments with a common vertex, the symmetric segment of the first one with respect
to the second;
Whenever new lines are added to the crease pattern, the older ones are broken up into smaller segments
at their crossing points, in accordance with our definition of a crease pattern, and implementing
procedure (𝑂1).
In addition, ORIPA allows copying and pasting segments, placing them with the mouse (“Copy/Cut
and Paste”) or arranging the copies on a two-dimensional array (“Array Copy”) or rotated around a
vertex (“Circle Copy”).
Then, the software allows for customizing the shape of the sheet of paper (“Edit Contour”), deleting
lines or changing their type. A few checkboxes permit to enable and disable some visualization
options.
Crease patterns drawn by ORIPA are saved in .opx format, an XML-like text file, listing all the
segments by which the CP is built, specifying for each one its type and its two end points using
Cartesian coordinates. It also allows importing files from a few vector-graphic formats (.dxf, .cp, and
.pdf, provided the files are formatted correctly for ORIPA), as well as exporting the CP in different
ways (.dxf, .obj, .cp, .svg, .png, .jpg).
Anyway, the most interesting features of this software involve the two buttons at the bottom of the
Figure 4.2: A crease pattern drawn and exported using ORIPA, from [2].
12
showing the CP in a new window and highlighting each problematic vertex (the top right window
in Figure 4.1). More precisely, it checks whether each internal vertex obeys the “Maekawa-Justin
theorem” and the “Kawasaki-Justin theorem (1)” (Theorems 1 and 2). Vertices on the edges do not
need to follow these rules. Anyway, the software does not check for the “Big-Little-Big angle theorem”
(Theorem 5), which should be satisfied by each vertex, both in the middle and along edges, since this
problem is faced when actually computing the expected folded figure.
The last and most important button computes the preview. It should produce two new windows, with
two different previews of the folded result.
The first one is called “Expected Folded Origami”, and is always computed when the crease pattern
is semi-foldable, i.e. whenever the “Check Configuration” does not display errors (the bottom left
window in Figure 4.1). The drawing in this window represents each of the c-faces in their actual
position after folding, partly overlapping each other, representing the f-faces, as called by J. Justin.
This preview can be rendered with different shades of gray for each f-face, according to the number
of layers of paper in that area. Computing this result is done following the consequences of the
“Isometries condition (Kawasaki-Justin)” (Theorem 6), and therefore this result is given whenever
the underlying CP is just SEMI-foldable, even in the cases when it is not actually foldable in practice
because of problems regarding paper self-intersection.
The second window is called “Folded Origami”, and, if the checkbox “Full Estimation” is selected, it
is (should be) computed only if the CP is really foldable in practice (the bottom right window in Figure
4.1). This part is the most complex and problematic, since we saw that checking for self-intersection
problems is NP -hard. It uses brute-force for finding the solutions of the “real” folded model, but given
its computational complexity, it does not always succeed. If the input is too large, ORIPA is unable
of computing this result, because of lack of memory. Anyway, in most cases in practice, it can find the
answers in reasonable time “due to the elimination of the invalid overlap relations at an early stage
of the estimation” [24].
It usually gives a list of possible results, with different layer superposition orderings; however, it
sometimes succeeds in producing an estimation of the folded crease pattern when in fact it is not
possible to actually fold it without self-intersections.
Lastly, ORIPA provides a few ways of moving around in the drawing or result areas with the mouse,
allowing to translate the figure, zoom-in and out, and (only for the folded previews) rotating the
figures.
13
Chapter 5
Improving ORIPA
I have been using ORIPA for years, and it allowed me to understand quite in depth how origami
geometry works, as well as to design and test a number of new projects (see [3]) and to draw their
instructions (see [2]).
However, ORIPA lacks a few interesting procedures and features, which could be quite useful when
using the software in practice.
I worked on the version maintained on GitHub [18] (since the original version is not maintained
anymore), as it fixed some bugs, added a few features and restructured the source code.
14
5.2 Underlying Triangular Grid
In the past few years, I have been working quite a lot on origami tessellations, a kind of geometric
origami in which a tile can be repeated over and over on the plane, virtually without limits (see [3] and
[2]). This tile is (usually) a flat-foldable pattern of creases, which can be “connected” to other copies
of itself, by placing one next to the other, and folding them together. This process can be extended
on the plane, with the size of the paper as the only limit, virtually filling the unlimited plane. Given
their regularity, tessellations are usually based on grids, and the regular grids (the ones composed only
of regular polygons of a single type) are just 3: grids of squares, triangles, or hexagons. Moreover,
the hexagonal grids can be thought as based on triangular ones (since 6 triangles can be seen as an
hexagon). Therefore, most origami tessellations have most of their points, or at least a number of
crucial ones, lying on a grid of some kind.
Other origami design techniques make heavy use of grids: “box-pleating” is based on grids of squares
(see [20, ch. 12] and [22, ch. 12, 13]), and its recent development, called “hex-pleating”, is based on
triangular grids (see [22, ch. 14]).
Underlying grids of squares are implemented in ORIPA since old versions, but other grids are not. In
the past, I used to keep some templates of triangular grids of the most common sizes to work with,
but with some annoying drawbacks. Firstly, when you needed a grid of a different size, you would
had to draw it anew. Secondly, and worse, these templates were drawn with (auxiliary) lines, which
are split in plenty small segments, and each of them is saved along with the creases of your crease
pattern, resulting in heavy files, slowing down several common actions in ORIPA (such as opening a
file, saving it, checking the CP, computing the preview of the folded shape, creating new lines crossing
many grid segments...).
Therefore, I added this feature in ORIPA, using a new checkbox called “Triangular Grid”, just below
the “Show Grid” one. When both are selected, a grid of triangles is shown, instead of the usual grid
of squares. The buttons used for customizing the grid (setting, increasing and decreasing the grid
division) are the same, for both kinds of grids.
The first doubt I faced upon was how to consider and display a triangular grid in 𝑛-ths. The existing
square grid has not such a problem, because the starting paper is by default a square, with the edge
𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 long (𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 is a parameter, used to instantiate a new crease pattern), centered in point
𝑂 = (0, 0). A square grid in 𝑛-ths means a grid of 𝑛 × 𝑛 small squares, each with side 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒𝑛 long,
filling the whole initial square.
A grid of triangles would also be centered, as the initial square is. However, what would “a grid in
𝑛-ths” mean in this case? It could be made of 3 sets of lines, each made of equally spaced parallel
lines (perhaps all of the same length), each set rotated around the origin of multiples of 2𝜋 3 . But
the 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 must also be taken into account! If the side of each small triangle forming the grid
is 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
𝑛 long, then such grid would not fill the whole sheet. And to fill the whole sheet, the grid
should be extended in different ways according to the shape of the paper. Moreover, when folding a
grid of triangles in practice, I (personally) usually start with an hexagonal sheet of paper instead of
a square, because I find it easier to fold a precise grid, by subsequently dividing each height of the
hexagon (each edge-to-opposite-edge distance) in 𝑛-ths.
However, some people prefer to start with squares, first dividing one edge in 𝑛-ths with vertical creases,
and then adding the 60∘ and 120∘ creases starting at the corners and intersections of this edge with
the vertical creases. Note that this grid will not meet the intersections at the opposite edge, and it
does not have any symmetry about the middle point. Another option could be folding a similar grid
inside a square, but starting with the intersections of the horizontal middle line with the vertical 𝑛-ths,
instead of the ones at an edge. This way the grid will be centered, but all the intersections of vertical
creases at the top and bottom edge will not be part of the grid.
Therefore, I chose to base the grid of triangles on an hexagon, centered at 𝑂 = (0, 0), with the
diagonal 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 long. The edges of this hexagon will be 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 2 long, and the small triangles
will obviously have sides 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
𝑛 long. Moreover, two opposite corners of this hexagon will be at the
middle point of two sides of the default square.
Then, the construction of the grid is made of two parts: the grid lines, and the grid points.
The grid lines are not segments part of the crease pattern, but just a visual aid for working on grids.
15
They are managed by a class called PainterScreen, the panel containing the drawing area and the CP.
To draw them, it is necessary to compute the end points of all the lines of the grid, which are all on
the edges of our virtual hexagon. Some symmetries of the grid are also exploited in the following 𝑂(𝑛)
algorithm:
Algorithm 1: Algorithm for computing the grid lines.
input : the size of the paper 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 and the division 𝑛.
output: the lines of the underlying triangular grid are drawn.
𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
𝑠𝑡𝑒𝑝 ← 𝑛 √;
𝑠𝑡𝑒𝑝× 3
ℎ 𝑠𝑡𝑒𝑝 ← ;
2 √
(𝑥, 𝑦) ← ( 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
4 , 𝑥 × 3);
foreach 1 ≤ 𝑖 ≤ 𝑛−1 2 do
(𝑥1 , 𝑦1 ) ← (𝑥 + 𝑠𝑡𝑒𝑝×𝑖
2 , 𝑦 − (ℎ 𝑠𝑡𝑒𝑝 × 𝑖));
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(−𝑥1 , 𝑦1 , 𝑥1 , 𝑦1 );
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(−𝑥1 , − 𝑦1 , 𝑥1 , − 𝑦1 );
(𝑥1 , 𝑦1 ) ← (𝑥 − (𝑠𝑡𝑒𝑝 × 𝑖), 𝑦);
(𝑥2 , 𝑦2 ) ← ( 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
2 − 𝑠𝑡𝑒𝑝×𝑖
2 , ℎ 𝑠𝑡𝑒𝑝 × 𝑖);
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(𝑥1 , 𝑦1 , 𝑥2 , − 𝑦2 );
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(−𝑥1 , 𝑦1 , − 𝑥2 , − 𝑦2 );
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(𝑥1 , − 𝑦1 , 𝑥2 , 𝑦2 );
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(−𝑥1 , − 𝑦1 , − 𝑥2 , 𝑦2 );
if 𝑛 is 𝑒𝑣𝑒𝑛 then
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒( 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
2 , 0, − 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
2 , 0);
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(−𝑥, − 𝑦, 𝑥, 𝑦);
𝑑𝑟𝑎𝑤𝐿𝑖𝑛𝑒(𝑥, − 𝑦, − 𝑥, 𝑦);
The grid points are managed by a different part of ORIPA, a class called PaintContext, which is
related to all the actions which can be performed. All the procedures implemented in ORIPA require
selecting some vertices and/or segments of the crease pattern, in order to compute some new lines as
result. This class also deals with display options of the selectable/selected data, and the points of the
grid must be of this kind, as the points of the CP are, but not stored along with the CP lines.
Computing these points also exploits some symmetries, but using hexagonal rotational symmetry (𝐷6 )
would turn out difficult. Moreover, since the vertices are stored using Cartesian coordinates, it is more
logical to use square symmetry (𝐷2 ). The points inside a quadrant are computed, line by line, and
each point is reflected in the three other quadrants along the 𝑥 and 𝑦 axes, as in computing the grid
lines.
16
Algorithm 2: Algorithm for computing the grid points.
input : the size of the paper 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒 and the division 𝑛.
output: the set 𝑆 of points of the underlying triangular.
𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
𝑠𝑡𝑒𝑝 ← 𝑛 √;
𝑠𝑡𝑒𝑝× 3
ℎ 𝑠𝑡𝑒𝑝 ← 2 ;
𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
𝑥𝑥 ← 4√ ;
𝑦𝑦 ← 𝑥𝑥 × 3;
if 𝑛 is 𝑜𝑑𝑑 then
𝑛 ← 𝑛 × 2;
𝑠𝑡𝑒𝑝 ← 𝑠𝑡𝑒𝑝
2 ;
ℎ 𝑠𝑡𝑒𝑝 ← ℎ 𝑠𝑡𝑒𝑝
2 ;
𝑆 ← 𝑆 ∪ {(0, 0)};
foreach 0 ≤ 𝑖𝑦 < 𝑛2 do
𝑦 ← 𝑦𝑦 − (ℎ 𝑠𝑡𝑒𝑝 × 𝑖𝑦);
if 𝑖𝑦+𝑛
2 is 𝑒𝑣𝑒𝑛 then
𝑆 ← 𝑆 ∪ {(0, 𝑦), (0, − 𝑦)};
for 0 ≤ 𝑖𝑥 ≤ 𝑛4 + 𝑖𝑦
2 do
𝑥 ← 𝑥𝑥 + 𝑠𝑡𝑒𝑝×𝑖𝑦
2 − (𝑠𝑡𝑒𝑝 × 𝑖𝑥);
𝑆 ← 𝑆 ∪ {(𝑥, 𝑦), (−𝑥, 𝑦), (𝑥, − 𝑦), (−𝑥, − 𝑦)};
for 0 ≤ 𝑖𝑥 < 𝑛2 do
𝑥 ← 𝑝𝑎𝑝𝑒𝑟𝑆𝑖𝑧𝑒
2 − (𝑠𝑡𝑒𝑝 × 𝑖𝑥);
𝑆 ← 𝑆 ∪ {(𝑥, 0), (−𝑥, 0)};
A small simplification is used for the grid points, by assuming that the division 𝑛 is 𝑒𝑣𝑒𝑛. If we try
constructing a grid inside an hexagon, dividing each height in 𝑛-ths, choosing and 𝑜𝑑𝑑 division 𝑛, then
the grid will not be the usual grid of triangles. This can be seen noting that in such case the diagonals
of the hexagon will not be part of the grid. Therefore, the grid will be made of alternating hexagons
and triangles. I had been wandering for a while whether such grids could make sense or not, and then
decided that they could. In this case, by doubling the division 𝑛 while computing the grid points, all
the correct points would be computed, plus a few extra points, which are not part of the grid (not at
any intersection of grid lines), but in the middle of the grid hexagons, which could therefore better be
useful than disturbing.
Figure 5.1: Triangular grids inscribed in an hexagon, with 𝑒𝑣𝑒𝑛 (left) and 𝑜𝑑𝑑 (right) divisions.
17
5.3 Kawasaki-Maekawa Vertex Completion
When folding origami in practice, it often happens to fold a vertex of degree 𝑛 = (2𝑘 − 1), creating
the missing fold line by flattening the paper in place. It is a very straightforward manouvre, because
by manipulating the paper around that vertex correctly, all the faces between two consecutive folds
are kept flat, except one that is bent, and that is where the missing crease will form, and there is a
unique position for the new fold in that slice. This face becomes split in two smaller angles by the
new crease line, according to the “Maekawa-Justin” and “Kawasaki-Justin (1)” theorems (Theorems
1 and 2).
Drawing such a line in ORIPA is not impossible, but requires a good understanding of origami geom-
etry. It can be done by using the “angle bisector” and “symmetric line” procedures, provided that the
extension of one of the fold segments at that vertex exists (otherwise, it must be drawn, by extending
one). Anyway, having to draw several construction lines that must be later deleted, is time-consuming
and awkward, and without a deep understanding of how such procedure works, many people using
ORIPA are unable to solve this. Therefore I decided to add a new command for drawing such lines.
The existing construction actions in ORIPA are built as a chain of basic actions, as selecting a single
existing vertex or segment, subsequently using these data to compute the (unique) result. This new
command requires the user to select a single vertex, and a set of possible solutions will be computed.
The first step is to look for all the crease segments in the CP having one end at the selected vertex,
and to compute the angles of all these creases around that point. Since a flat vertex must have even
degree, and this command will compute the single missing crease at a vertex (otherwise, the solu-
tions would be unlimited), the selected vertex must have odd degree. Therefore, a vertex of degree
𝑛 = (2𝑘 − 1) (odd ) must be selected, otherwise no result(s) will be computed. As a consequence of
the “Maekawa-Justin theorem” (Theorem 1), the type of the missing crease is uniquely given, and we
must have |𝑀 − 𝑉 | = 3 or |𝑀 − 𝑉 | = 1 around the selected vertex. Therefore, if the creases around
the selected vertex do not obey this rule, the result(s) will not have a type (they will be gray, auxiliary
crease lines).
Then, each angle between two consecutive creases around the vertex must be considered. Each of
these angles could be split in two, therefore we may have at most 𝑛 = (2𝑘 − 1) solutions (i.e. the
solutions can be at most as many as the existing lines around the vertex). The most obvious procedure
to solve this would be considering each angle separately, computing the alternate sum about the ver-
tex, excluding the considered section, to get the pair of angles in which this section could eventually
be split. More precisely, each section 𝛼𝑖 could be replaced by two new angles, 𝛽𝑖 and 𝛾𝑖 , such that
𝛼𝑖 = 𝛽𝑖 + 𝛾𝑖 , and such that after this replacement the vertex will obey to Theorem 2, and therefore
be flat-foldable.
18
Algorithm 3: 𝑂(𝑛2 ) algorithm for computing the one missing segment possibilities.
input : the 𝑛 = (2𝑘 − 1) consecutive angles 𝛼𝑖 around the selected vertex 𝑣0 .
output: the set 𝑆 of solutions.
𝑆 ← {};
foreach 0 ≤ 𝑖 < 𝑛 do
if 𝑖 is 𝑒𝑣𝑒𝑛 then
∑︀ ∑︀ ∑︀ ∑︀
𝛽 ← 𝜋 − (∑︀ 𝑜𝑑𝑑 𝑗<𝑖 𝛼𝑗 − ∑︀𝑒𝑣𝑒𝑛 𝑗<𝑖 𝛼𝑗 + ∑︀ 𝑒𝑣𝑒𝑛 𝑗>𝑖 𝛼𝑗 −∑︀ 𝑜𝑑𝑑 𝑗>𝑖 𝛼𝑗 );
𝛾 ← 𝜋 − ( 𝑒𝑣𝑒𝑛 𝑗≤𝑖 𝛼𝑗 − 𝑜𝑑𝑑 𝑗<𝑖 𝛼𝑗 + 𝑜𝑑𝑑 𝑗>𝑖 𝛼𝑗 − 𝑒𝑣𝑒𝑛 𝑗>𝑖 𝛼𝑗 );
else ∑︀ ∑︀ ∑︀ ∑︀
𝛽 ← 𝜋 − (∑︀ 𝑒𝑣𝑒𝑛 𝑗<𝑖 𝛼𝑗 −∑︀ 𝑜𝑑𝑑 𝑗<𝑖 𝛼𝑗 + ∑︀ 𝑜𝑑𝑑 𝑗>𝑖 𝛼𝑗 − ∑︀𝑒𝑣𝑒𝑛 𝑗>𝑖 𝛼𝑗 );
𝛾 ← 𝜋 − ( 𝑜𝑑𝑑 𝑗≤𝑖 𝛼𝑗 − 𝑒𝑣𝑒𝑛 𝑗<𝑖 𝛼𝑗 + 𝑒𝑣𝑒𝑛 𝑗>𝑖 𝛼𝑗 − 𝑜𝑑𝑑 𝑗>𝑖 𝛼𝑗 );
if 𝛽 > 0 ∩ 𝛾 > 0 then
/* replacing 𝛼𝑖 by 𝛽 + 𝛾 is one solution */
let (𝑐𝑖 , 𝑐𝑖+1 ) be the creases forming angle 𝛼𝑖 ;
𝑎𝑛𝑔𝑙𝑒 ← 𝑠𝑙𝑜𝑝𝑒(𝑐𝑖 ) + 𝛽 = 𝑠𝑙𝑜𝑝𝑒(𝑐𝑖+1 ) − 𝛾;
𝑆 ← 𝑆 ∪ {𝑛𝑒𝑤𝐿𝑖𝑛𝑒(𝑣0 , 𝑎𝑛𝑔𝑙𝑒)};
We assume the existence of a function 𝑠𝑙𝑜𝑝𝑒(𝑐𝑖 ) → [0, 2𝜋] which computes the angle of crease 𝑐𝑖 with
respect to vertex 𝑣0 . In fact, the creases around 𝑣0 are computed as an ordered sequence of their
slopes, and the angles 𝛼𝑖 are the difference of the slopes of two consecutive creases. The new segment
is created by starting at vertex 𝑣0 and extending with slope 𝑎𝑛𝑔𝑙𝑒 until the first existing segment is
met, as the “symmetric line” construction works.
If the vertex we are considering has degree 𝑛 = (2𝑘 − 1), then this algorithm has complexity 𝑂(𝑛2 )
because of all the sums computed for each angle. We can write a much more efficient one with com-
plexity 𝑂(𝑛) simplifying the sums, by noting that whenever both 𝛼𝑖 and 𝛼𝑖+1 have a valid replacement
by 𝛽𝑖 + 𝛾𝑖 and 𝛽𝑖+1 + 𝛾𝑖+1 respectively, then 𝛾𝑖 = 𝛽𝑖+1 (see the right image in Figure 5.3). Therefore
we can write the following:
19
Algorithm 4: 𝑂(𝑛) algorithm for computing the one missing segment possibilities.
input : the 𝑛 = (2𝑘 − 1) consecutive angles 𝛼𝑖 around the selected vertex 𝑣0 .
output: the set 𝑆 of solutions.
𝑆 ← {}; ∑︀
𝛽 ← 𝜋 − 𝑛𝑖=1 [(−1)𝑖 × 𝛼𝑖 ];
foreach 0 ≤ 𝑖 < 𝑛 do
𝛾 ← 𝛼𝑖 − 𝛽;
if 𝛽 > 0 ∩ 𝛾 > 0 then
/* replacing 𝛼𝑖 by 𝛽 + 𝛾 is one solution */
let (𝑐𝑖 , 𝑐𝑖+1 ) be the creases forming angle 𝛼𝑖 ;
𝑎𝑛𝑔𝑙𝑒 ← 𝑠𝑙𝑜𝑝𝑒(𝑐𝑖 ) + 𝛽 = 𝑠𝑙𝑜𝑝𝑒(𝑐𝑖+1 ) − 𝛾;
𝑆 ← 𝑆 ∪ {𝑛𝑒𝑤𝐿𝑖𝑛𝑒(𝑣0 , 𝑎𝑛𝑔𝑙𝑒)};
𝛽 ← 𝛾;
This action then adds all the computed results to the crease pattern. Since, unlike the existing actions,
the result of this procedure is not unique, this action will be improved by letting the user choose one
segment among the computed possibilities. Therefore, the possible results will not be part of the CP,
but will form a set of segments, from which the second part of this procedure action will select one to
actually add to the CP.
20
Chapter 6
Future Work
Several other features would be useful in ORIPA, and the work done so far is just the beginning. For
example, there are no commands for drawing new lines according to procedures (𝑂6) and (𝑂8). They
require solving a 2nd- and 3rd-degree equation respectively, therefore they can have 2 and 3 distinct
solutions, requiring giving the possibility to the user to choose among them.
Given my interest for origami tessellations and unusual patterns, other additions could be made con-
cerning the underlying grids. Since most of the semi-regular grids are based on the 3 regular ones, it
makes no sense implementing them all. Anyway, non-periodic patterns as Penrose tilings and polyg-
onal grids have nothing in common with the usual grids. They are extremely interesting for me, and
I would love to explore their possibilities.
Then, since I had been using ORIPA for publishing a number of original projects, a few features would
be useful for producing drawings of higher quality. For example, the “Expected Folded Origami” pre-
view, when rendered with gray shades, is extremely close to the real folded object, when it is folded
using a thin and translucent paper, looking at it when backlit (a very common habit with origami
tessellations, again; see Figure 6.1). ORIPA allows exporting only the lines of this object, representing
the raw and folded edges of the figure, and it would be nice to export also the gray faces of which the
result is made. This requires exporting several sets of polygons, each set representing all the areas
made of a certain number of superposed layers.
Lastly, since CPs are made of segments intersecting only at their ends, the exported CP could be made
of plenty of different small segments. This can make the resulting files quite big, when successively
other applications are used to edit the drawings, and can give rise to a few display issues when dotted
or dashed lines are used to represent folds. Therefore, multiple aligned segments with common end
points could be grouped together to become a single, longer one when exporting the CP.
These could all be good directions for future developments aimed at improving this software, for fur-
ther advances in the art and technique of origami.
21
Bibliography
[1] 6OSME Committe, The 6th International Meeting of Origami Science, Mathematics and Edu-
cation. http://www.origami.gr.jp/6osme/index.html, Tokyo, 2014.
[4] Marshall Bern and Barry Hayes, “The Complexity of Flat Origami”, in Proceedings of the 7th
ACM-SIAM Symposium on Discrete Algorithms, pp. 175-183. New York: ACM Press, 1996.
[5] Erik D. Demaine and Martin L. Demaine, “Recent Results in Computational Origami”, in
Thomas Hull (editor), Origami3 : Third International Meeting of Origami Science, Mathematics,
and Education, pp. 3-16. Natick, MA: A K Peters, Ltd., 2002.
[6] Robert Geretschläger, Geometric Origami. Shipley, UK: Arbelos, 2008. First Japanese edition:
Mathematics of Origami, Tokyo: Morikita Publishing, 2002.
[7] Koshiro Hatori, “Origami Constructions”, in The 20th Year Annual Special Issue for the Regular
JOAS Members, pp. 21-38. Tokyo: OrigamiHouse, 2010.
[8] Thomas Hull, “On the Mathematics of Flat Origamis”, in Congressus Numerantium, Vol. 100
(1994), pp. 215-224.
[9] Thomas Hull (editor), Origami3 : Third International Meeting of Origami Science, Mathematics,
and Education. Natick, MA: A K Peters, 2002.
[10] Thomas Hull, “The Combinatorics of Flat Folds: A Survey”, in Thomas Hull (editor), Origami3 :
Third International Meeting of Origami Science, Mathematics, and Education, pp. 29-38. Natick,
MA: A K Peters, Ltd., 2002.
[11] Thomas Hull, project Origami. Wellesley, MA: A K Peters, Ltd., 2006.
[12] Humiaki Huzita (editor), Proceedings of the First International Meeting of ORIGAMI and
TECHNOLOGY. Padova, Italy: Dipartimento di Fisica dell’Università di Padova, 1991.
[13] Humiaki Huzita, “The trisection of a given angle solved by the geometry of origami”, in Humiaki
Huzita (editor), Proceedings of the First International Meeting of ORIGAMI and TECHNOL-
OGY, pp. 195-214. Padova, Italy: Dipartimento di Fisica dell’Università di Padova, 1991.
[14] Humiaki Huzita and Benedetto Scimemi, “The algebra of paper-folding (Origami)”, in Humiaki
Huzita (editor), Proceedings of the First International Meeting of ORIGAMI and TECHNOL-
OGY, pp. 215-222. Padova, Italy: Dipartimento di Fisica dell’Università di Padova, 1991.
[15] Jacques Justin, “Towards a Mathematical Theory of Origami”, in Koryo Miura (editor),
ORIGAMI SCIENCE & ART: Proceedings of the Second International Meeting of Origami Sci-
ence and Scientific Origami, pp. 15-29. Otsu, Shiga, Japan: Seian University of Art and Design,
1997.
22
[16] Toshikazu Kawasaki, “On relation between mountain-creases and valley-creases of a flat
origami”, in Humiaki Huzita (editor), Proceedings of the First International Meeting of
ORIGAMI and TECHNOLOGY, pp. 229-237. Padova, Italy: Dipartimento di Fisica
dell’Università di Padova, 1991.
[17] Toshikazu Kawasaki, “𝑅(𝛾) = 1”, in Koryo Miura (editor), ORIGAMI SCIENCE & ART:
Proceedings of the Second International Meeting of Origami Science and Scientific Origami, pp.
31-40. Otsu, Shiga, Japan: Seian University of Art and Design, 1997.
[19] Robert J. Lang, Origami and Geometric Constructions, 1996-2010. Available at: http://
langorigami.com/science/math/hja/origami_constructions.pdf.
[20] Robert J. Lang, Origami Design Secrets: Mathematical Methods for an Ancient Art. Wellesley,
MA: A K Peters, Ltd., 2003.
[21] Robert J. Lang (editor), Origami4 : Fourth International Meeting of Origami Science, Mathe-
matics, and Education. Natick, MA: A K Peters, 2009.
[22] Robert J. Lang, Origami Design Secrets: Mathematical Methods for an Ancient Art, second
edition. Boca Raton, FL: CRC Press, 2012.
[24] Jun Mitani, “The Folded Shape Restoration and the Rendering Method of Origami from the
Crease Pattern”, in Proceedings 13th International Conference on Geometry and Graphics. Dres-
den, Germany, 2008.
[25] Koryo Miura, Tomoko Fuse, Toshikazu Kawasaki, and Jun Maekawa (editors), ORIGAMI SCI-
ENCE & ART: Proceedings of the Second International Meeting of Origami Science and Scien-
tific Origami. Otsu, Shiga, Japan: Seian University of Art and Design, 1997.
[26] Tandalam Sundara Row, Geometric Exercises in Paper Folding. Madras: Addison & Co., 1893.
Reprinted by New York: Dover Publications, 1966.
[27] Patsy Wang-Iverson, Robert J. Lang, Mark Yim (editors), Origami5 : Fifth International Meeting
of Origami Science, Mathematics and Education. Boca Raton, FL: CRC Press, 2011.
23