I think faces, edges, vertices, etc are fine names to use, but generally should be defined in terms of the dimensionality of the main geometric type.
So e.g. for an N-cube we'd talk about the N-1-faces, N-2-edges, and N-3-vertices.
So the definition of e.g. the numFaces function shouldn't be numMCubes< 2 >(), it should be based on the dimensionality of the current type and be numMCubes< DIM - 1 >().
We can also have an absolute version numAdjacent< DIM >() which replicates the current implementation (which may get more use generally).
I think faces, edges, vertices, etc are fine names to use, but generally should be defined in terms of the dimensionality of the main geometric type.
So e.g. for an
N-cube we'd talk about theN-1-faces,N-2-edges, andN-3-vertices.So the definition of e.g. the
numFacesfunction shouldn't benumMCubes< 2 >(), it should be based on the dimensionality of the current type and benumMCubes< DIM - 1 >().We can also have an absolute version
numAdjacent< DIM >()which replicates the current implementation (which may get more use generally).