Project: Generating Nets for Random Convex Polyhedra
This project is essentially a visualization of Shephard's conjecture, which states that every convex polyhedron admits a self-nonoverlapping unfolding. Currently, there exists unfolding data for several predefined polyhedra, and my goal is to create a function that can take in any random convex polyhedron and create a valid non-overlapping net for it. The algorithm will split the polyhedron with the following constraints: each face must share at least one edge with at least one of it's neighboring faces and no face can share any area with another face. A variety of algorithms will be tested to achieve this goal.
Summary of Results
With the help of my mentor, I was able to create a program that creates non-overlapping nets for random polyhedra. The first step was to create a graph for the dual polyhedron, displaying the connectivity of the faces. It is then converted to a list of possible spanning trees, which are essentially a blueprint for the layout of the net. The net is generated by first transforming the polyhedron so that one face lies flat on the xy plane and performing rotations and translations on the adjacent faces so that they also lie flat according to the spanning tree. One unique net is generated from each spanning tree, allowing the function to output a list of possible nets. The net was tested for overlap by calculating the surface area of the original polyhedron and comparing it to the surface area of the net. Nets where the two surface areas differed were deleted from the list. The function returns several successful results for every random polyhedron that I tested, although the program does run quite slowly for polyhedra with high numbers of faces because the complexity of the graph and number of spanning trees increase drastically as the number of faces increase. From this project, I acquired knowledge of many aspects of three-dimensional modeling and geometric transformations, and I hope to work on extensions of this project in the future.
A possible extension would be applying a similar algorithm to nonconvex polyhedra and showing that it is impossible to generate a non-overlapping net in some cases. Additionally, optimization algorithms could also be implemented to speed up the unfolding process. For example, another function could also be created to generate the first net that is valid, which would greatly increase speed if only one net is desired.