Computational origami is a recent branch of computer science studying efficient algorithms for solving paper-folding problems. This field essentially began with Robert Lang's work on algorithmic origami design [25], starting around 1993. Since then, the field of computational origami has grown significantly. The purpose of this paper is to survey the work in the field, with a focus on recent results, and to present several open problems that remain. The survey cannot hope to be complete, but we attempt to cover most areas of interest.
OverviewMost results in computational origami fit into at least one of three categories: universality results, efficient decision algorithms, and computational intractability results.A universality result shows that, subject to a certain model of folding, everything is possible. For example, any tree-shaped origami base (Section 2.1), any polygonal silhouette (Section 2.3), and any polyhedral surface (Section 2.3) can be folded out of a large-enough piece of paper. Universality results often come with efficient algorithms for finding the foldings; pure existence results are rare.When universality results are impossible (some objects cannot be folded), the next-best result is an efficient decision algorithm to determine whether a given object is foldable. Here "efficient" normally means "polynomial time." For example, there is a polynomialtime algorithm to decide whether a "map" (grid of creases marked mountain and valley) can be folded by a sequence of simple folds (Section 3.4).Not all paper-folding problems have efficient algorithms, and this can be proved by a computational intractability result. For example, it is NP-hard to tell whether a given crease pattern folds into any flat origami (Section 3.2), even when folds are restricted to simple folds (Section 3.4). These results mean that there are no polynomial-time algorithms for these problems, unless some of the hardest computational problems can also be solved in polynomial time, which is generally deemed unlikely.We further distinguish computational origami results as addressing either origami design or origami foldability. Basically, in origami design, some aspects of the target configuration are specified, and the goal is to design a suitable target that can be folded out of paper. In