Sunny Wang

Class of 2019


Sunny Wang is a rising sophomore at Camas High School in Washington state. From a young age, he has shown a strong passion for mathematics, music, and computer science. He has competed in numerous math competitions, such as Mathcounts or AMC, and was a two-time AIME qualifier. During school, he participates in a math club, which he founded this year, along with Science Olympiad, Knowledge Bowl, and varsity tennis. He is also a part of a magnet program, which focuses on research projects. As a freshman, he took rigorous classes such as AP Statistics, AP Calculus BC, and AP Physics 1, and is planning to take AP Physics C and multivariable calculus next year. Outside of school, Sunny has played piano competitively for 11 years, placing in competitions and scholarships such as MTNA and OFMC. He also formed a string trio which placed at the Washington Solo & Ensemble competition, and plays in his school’s jazz band and orchestra. In addition, he has taken classes on Python and JavaScript, and enjoys creating games in Unity. In his free time, he likes to create origami and solve Rubik's cubes.

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.

Future Work

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.