The dual code supports multiple levels of subdivision including adaptive subdivision. It also supports the Midedge scheme. The main focus in this code was on simplicity so that it may serve as an educational tool for those who want to learn more about subdivision. Consequently we have favored simplicity over completeness in our implementation. For example, there are no feature based subdivision rule modifications included in the code.
Boundaries have no special crease rules, etc.
Such treatments can all be added, and would be included in a more complete code, but they also make the code harder to read for beginners. The subdivision part of this is easy, but the code which generates triangulated output for an adaptive dual subdivision is extremely nasty. We included it anyway, since adaptivity is so important in practice. If any of these conditions are violated the input reader will throw an assertion. Subdivision is not well defined for non-manifold meshes.