Previous | Next --- Slide 22 of 36
Back to Lecture Thumbnails

How do you determine which halfedge goes which way?


At one vertex, there could be multiple half edges that start from that vertex. Is the tie-breaking arbitrary or is there a practice for it?


It seems to be that halfedge data structure does not include information about the actual positions of points. How do we know where to draw our polygons with just halfedge pointers?


Which halfedge does a vertex pick if it is on a strip or loop of polygons? I feel like in the end it doesn't matter since you can just traverse the halfedges to find out every polygon around it, so is it just arbitrary?


Nothing in this definition seems to be specific to triangles, since halfedges don't know how many edges are on their face, only where the next edge is. But we've already talked about how triangles are useful as a basic building block shape for graphics. How would we enforce strictly triangular faces in a halfedge data structure?


Which of the two half edges does the edge struct store?


How do you define the next edge that current halfedge points to?


In the struct, does vertex has the sequence/order?


How is all half-edges ordered in this data structure? Is the order determined at the preprocessing stage?


Is vertex stored as a compact list in this setting, Edge only referencing the index?


If a halfedge has no twin, is it a boundary?


Are halfedges directed, and does it matter if we're defining a loop of polygons clockwise or ccw?


Will it be a double linked-list?


Since each vertex/face/edge only chooses one half-edge, is there a specific one that takes priority or is it entirely up to the person implementing it.


Is there any motivation behind storing the vertex we are coming from other than arbitrary convention?


Twins should be the same between halfedges right? It looks like there's only one "next" so is it still possible to traverse around a mesh in a reasonable time?


How would halfedge based meshes be exported and imported? Do they use their own spec or are they typically algorithmically converted to other more universal file formats like .obj and .ply and is this where we would want to make use of other other mesh data structures?


Will it be possible that there are no twins? Plus, how can I make sure it is all counter-clockwise or clockwise?


Is the main reason we usually don't use this structure it's memory footprint? It seems like we have to store so many pointers, and probably not having good access proximity in memory.


Would a halfedge data structure still work if we chose, say, a square mesh instead of a triangle mesh?


Is there a preference to the orientation?