Вы находитесь на странице: 1из 24

Dipartimento di Ingegneria e Scienza dell’Informazione

Corso di Laurea
Informatica

Improving ORIPA
An Origami pattern CAD editor in Java

Supervisore Laureando

Alberto Montresor Alessandro Beber

Anno Accademico 2015-2016


Contents

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

4 ORIPA: Origami Pattern Editor 11


4.1 ORIPA Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

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.

Definition 1. The elementary Euclidean procedures are the following:

(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,

one can determine the point(s) of intersection of 𝑐1 and 𝑐2 .

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.

2.2 Origami Constructions


As we shall soon see, origami procedures are deeply different from Euclidean ones. First of all, we
restrict ourselves to straight creases only, considering as basic moves only those maneuvers creating a
single fold line at a time, and unfolding each step to see the result on our plane.
As for the SE&C case, we consider folding an infinite Euclidean plane, with each fold creating an
infinite straight line as a crease. Since folding is based on reflections along a crease line, we consider
the symmetric of a point or a line with respect to another line to be known. This can be easily done
in practice by marking the original point or line on both layers of paper, after the crease acting as

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.

Figure 2.1: The Origami procedures (𝑂2)-(𝑂8), from [7].

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.

Figure 2.3: Origami procedure (𝑂8), from [7].

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.

Definition 3. A c-net (commonly known as crease pattern, or CP in short) is a planar graph, in


which the straight edges represent either the paper edges or the crease segments of our model. The
edges form a closed (convex) polygon, which represents our sheet of paper; and the creases can have
either 𝑀 (for Mountain) or 𝑉 (for Valley) parity. Since the graph is planar, edges can not intersect
themselves, but can meet only at their ends at vertices. Vertices have fixed positions (in a coordinate
system) inside the sheet of paper.
All these crease segments, divide our sheet in a net of (convex) polygons, which we will call the c-faces.
When we are folding our model according to the given crease pattern, the faces will arrange one over
the other, in some order, to form the flat-folded model, which can be seen as a different disposition of
our creases, now forming a non-planar graph called f-net (f for folded). These folds now form a set of
smaller polygons, the f-faces.

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.

3.1 Local Flat-Folding


Now consider a crease pattern made of a single internal vertex (along the edges we should have other
vertices, of course, but they behave differently).

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

𝛼1 + 𝛼3 + · · · + 𝛼2𝑛−1 = 𝛼2 + 𝛼4 + · · · + 𝛼2𝑛 = 𝜋 (3.2)

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:

Theorem 3 (Kawasaki-Justin theorem (2)). Let 𝐶 = 𝑙1 , 𝑙2 , . . . , 𝑙2𝑛 be a collection of radial lines


around a vertex, and denote the angles between these lines by 𝛼1 , 𝛼2 , . . . , 𝛼2𝑛 . If the condition 3.2
holds, then 𝐶 generates a flat origami.

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

For further details on this, see [15], [16], [17]. Finally,

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.

3.2 Global Flat-Folding


The mathematical formalization of origami principally comes from the work by Jacques Justin, starting
from earlier works by him and others (as Humiaki Huzita, Toshikazu Kawasaki...), and it is published
in [15].
After we have seen what conditions must hold for a single vertex to be folded flat, let us extend this to
the general case, of a crease pattern composed of several internal vertices. The first, surprising result
is the following:

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: Origami Pattern Editor

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]).

Figure 4.1: Screenshot of the four windows of ORIPA (from [23]).

4.1 ORIPA Features


ORIPA provides a work area consisting of a polygon (a square, by default) representing the starting
sheet of paper, and a number of commands for drawing and editing a crease pattern on it, in order to
make it flat-foldable and to calculate its folded shape (see Figure 4.1).
In addition, an underlying (square) grid of gray lines is displayed. These lines are not part of the
crease pattern, but are used for aiding the input of creases providing useful reference points. This grid
can be unselected or adjusted by a few commands in the side panel.
The side panel also provides most of the commands to input and edit lines.
First, lines can appear in different colors: black is used for edges, red for mountain creases, blue for
valley creases, gray for auxiliary creases, and green for selected lines.
Then, there are graphic buttons for drawing new lines according to the most used origami procedures
((𝑂2)-(𝑂5)) and a few more geometric ones. In particular, there are commands for constructing:

11
1. the segment connecting two points (𝑂4);

2. the line passing through two points (𝑂4);

3. the perpendicular bisector of a segment (𝑂3);

4. the bisector of an angle (𝑂2);

5. the three segments connecting the incenter of a triangle with its three vertices (by constructing
the angle bisectors of its 3 internal angles);

6. a segment from a point, perpendicular to a line (𝑂5);

7. given two segments with a common vertex, the symmetric segment of the first one with respect
to the second;

8. a mirror copy of a set of selected segments, reflected along another line;

9. a segment with a specified length and angle, starting from a point.

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].

left commands panel.


The first one is called “Check Window”, and it checks the drawn crease pattern for flat-foldability,

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

Figure 4.3: The “semi-folded” preview of the CP in Figure 4.2.

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.

5.1 Minor Changes


When drawing intricate structures in ORIPA, it could happen that two vertices get so close together
that the system cannot recognize them as separate entities. This happens because ORIPA uses a
small 𝜀 (error) constant, to deal with the usual problems faced when using floating point numbers in
computers. This way, the system considers two vertices with coordinates extremely close together, to
be the same point, by approximating this small error.
Anyway, a few problems could arise:
1. A new segment starting from a given vertex, runs very close to another existing vertex, and the
latter “grabs” the segment, becoming its end point. In this case, the angle formed by the new
segment at its start point changes slightly, and this problem is discovered by an error displayed
when the crease pattern configuration is checked.
2. A new segment starting from a given vertex, has its end point on an existing line, very close to
an existing vertex. In this case, the new segment is drawn correctly, but the two vertices are too
close to be considered separate points. Therefore we have the same angle problem as before, and
moreover, the small segment connecting the two close points (produced by splitting the existing
line in two) disappears, and cannot be considered by ORIPA.
In such cases you would had to draw the CP anew, starting from a bigger initial sheet, by drawing
a bigger one with the existing procedures, or by manually modifying an empty ORIPA file, changing
the size of the sheet. Otherwise, you could not proceed drawing your design.
To avoid this, I added a command (“Scale CP”, under the “Edit” menu) to scale the existing crease
pattern by a factor chosen by the user. The CP is simply represented by a collection of lines, containing
for each one its type and two end points, and a collection of 2d vectors, representing the coordinates
of each vertex. This command merely multiply each vertex vector of the CP by the scalar given by
the user. Obviously, it also amplifies the possible error among the end points of the existing segments,
but since their error is extremely smaller than the 𝜀 constant, this did not give rise to any additional
problem in its use in practice.
Another small addition regards the visualization of the “Check” window. Since the source code was
restructured by [18], a small but essential feature was forgotten during this work: this window did
not respond anymore to mouse actions, for zooming and translating. Therefore, I fixed it by restoring
this feature, in the same way as the other windows work.

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

Figure 5.2: Completing a vertex of degree 𝑛 = 1.

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 )

Figure 5.3: Completing a vertex of degree 𝑛 = 3, with its 3 possible solutions.

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.

Figure 6.1: The folded result of Figures 4.2 and 4.3.

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.

[2] Alessandro Beber, Fold, Twist, Repeat. CDO/self-published, 2013.

[3] Alessandro Beber, “origami designs”, https://www.flickr.com/photos/30452866@N06/sets/


72157607824673081. Flickr, 2008-2015.

[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.

[18] Ouchi Koji, http://github.com/Ooouch1, ORIPA S, available at https://github.com/


oripa/oripa, 2012.

[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.

[23] Jun Mitani, http://mitani.cs.tsukuba.ac.jp/, ORIPA, available at http://mitani.cs.


tsukuba.ac.jp/oripa/, 2005-2009.

[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

Вам также может понравиться