Learning Combinatorial Maps

In an attempt to implement Constrained Delaunay tetrahedralization algorithm proposed by Hang Si, the CDTGenerator, I have started to learn about a beautiful concept in topology called Combinatorial Maps. This datastructure can be used to represent orientable subdivided d-dimensional objects. Speciality about these structures is that they are edge centered meaning they define all components(called cells) of an objectusing a basic element called dart and a set of pointers modelling incidence and adjacency relations between components.
I would like to start by first pondering into the type of objects this datastructure can represent, i.e., the orientable subdivided d-dimensional objects. We will use a divide and conquor strategy to understand these objects. So what are orientable objects anyway?

Orientable surfaces(Quoting from mathworld):

A regular surface M Rn is called Orientable if each tangent space Mp has a complex structure Jp Mp Mp such that p Jp is a continuous function.

Well, it is so easy to a programmer isnt it? :) Lets try understanding it:

Written on 19 Feb 2015