Previous | Next --- Slide 11 of 35
Back to Lecture Thumbnails
xTheBHox

Is it possible to approximate all surfaces to a manifold?

keenan

@xTheBHox For me (and many others), the word "surface" immediately implies manifold, i.e., by definition a surface is a 2-dimensional manifold. But I understand what you're asking---for instance, can the cone in this picture be approximated as a 2-manifold? This really depends on what you allow, and what you mean by "approximate." For instance, this cone can easily be described as a so-called immersed surface, i.e., a parameterized surface where you allow self-intersections; in particular, it can be described using the simple function $f(u,v) := (v\cos u,v\sin u,v)$, where the domain of the map $f$ is $M := [0,2\pi) \times [-1,1]$ (a rectangle), or better yet, $M := S^1 \times [-1,1]$ (a cylinder, where $S^1$ is the circle). In this case, we'd say that the surface is really $M$ (a cylinder), and the map $f$ is just an immersion of $M$ into 3-dimensional space. In this sense, we've represented the picture above as a surface, though not as a submanifold of $\mathbb{R}^3$. To really think of this picture as a submanifold (roughly speaking: a subset of space that also has the property of being a manifold), we'd really have to change its geometry. For instance, we could break it into two pieces (top and bottom), or connect it by a small "tube" in the middle. In this case, we can make this geometric perturbation arbitrarily small (e.g., just a tiny shift, or a tiny little tube), so in this sense we can do an extremely good job of approximating this nonmanifold set by a manifold surface---and that will be fairly true in general.

All this being said, when it comes to practical mesh data structures, practical algorithms, etc., it may be quite useful to be able to work with non-manifold meshes, and a lot of the algorithms we'll discuss can be generalized to the nonmanifold case. In the end, it's just a matter of trade offs: do you always want to write your algorithms to treat the most general case? Or are you willing to make simplifying assumptions that will make your code fly on most data? There's not one right answer to this question, and folks who write geometric algorithms are often going back and forth between these trade offs (with occasional hard-line zealots for one particular way of doing it! :-))