Subdivision is a great tool in graphics and geometry processing to get smooth curves and surfaces out of initial control polygons and control meshes.

In this tutorial we explore the mathematical basics, learn about the most important subdivision schemes, and implement them in Matlab.

---------------------

We start by introducing the basic concepts and notation for curve subdivision and learn how it can be seen

as an infinite linear refinement process of the initial data. This leads to the idea of the subdivision matrix and analysing the latter enables us to compute points on the limit curve.

---------------------

We then learn about the formalism of Laurent polynomials. This allows us to describe the subdivision process in an algebraic wayand helps to derive conditions

that guarantee the convergence of a scheme. Moreover, we derive conditions for the generation and the reproduction of polynomial limit functions.

---------------------

We further use the concept of Laurent polynomials to study the smoothness of the limit functions and also introduce the joint

spectral radius method for deriving lower and upper bounds on the Hölder regularity.

---------------------

Finally, we learn how to extend the idea of subdivision from curves to surfaces and study the most important schemes for triangle and quadrilateral meshes.