Yes exactly that.
I will talk a bit about what the objective here is, and also how these pieces of data are stored.
Imagine you know all the coordinates to draw the lines to/from in order to make a nice looking 3D cube for a given camera position.
If this were a real box, we wouldn't be able to see the lines of the back of the cube, because they are hidden away behind it. The thing that blocks our view is the closest Face of the cube - it is solid and so we cannot see through it.
The objective here is to create that look, as if the sides of the cube are solid. The first step thing that we need to do, then, is to figure out a way to say where the faces are.
The way I chose to do this is to take a bunch of edges - at least 3 - and say "these edges form a face".
So in my array... well, actually it's a matrix.. here is how I am organising things:
face[2][0] = firstedge + 3
face[2][1] = firstedge + 4
face[2][2] = firstedge + 5
This is a typical face entry. "face" is the name of the matrix. The "2" in the first set of square brackets means that this is a declaration for Face ID 2. We're numbering the faces, yea..? Ok, and the 0, 1, and 2 in the second square brackets, that is simply the ID numbers used to refer to the different slots within that face... it's like an ID number for an edge's membership to a particular face.
The values that we are storing in each "slot" of the face matrix, correspond to the ID numbers of the Edges that are participating in each face ID.
So we have ID numbers for each of these:
Vertex
vertex2dX[ID]
Edge
edgeFrom[ID]
edgeTo[ID]
Face
face[ID][0]
Edge membership to a face
face[0][ID]
Let me know if there is anything else specific that you're having trouble grasping :>