This is the third lab for CSE 5543: Geometric Modeling in Spring 2018.

My implementation uses Processing, a small package that allows for quick creation of graphical user interfaces (GUIs), which allows me to easily create buttons, input fields, and display the curves.

This lab is an extension on the second and first labs. Here, I've introduced a 3D camera package in order to move the camera around in 3-space. Then, I allowed manipulation of points in three space. By clicking a point and dragging it around with x, y, or z pressed, the points can be moved. From here, the user can generate a Bezier surface or a cubic BSpline surface.

Alternatively, a user can import a .OFF file and subdivide the surface. This lab required three different subdividing algorithms. The algorithms generally create a new face from each existing face, edge, and vertex. The main difference is where the new vertices reside in 3-space. Each algorithm uses a different weighting of factors when calculating a new vertex's position, which gives a different kind of subdivision. The implementations I've made use generalizations of a biquadratic and bicubic BSpline subdivision.

Click here to view the source code, or play with the application yourself from the builds folder!