1/9
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Independent Face List
Each face stores its vertices explicitly.
struct Vertex {float x, y, z;};
struct Face {Vertex v1, v2,v3;};
struct Mesh {Face faces[F];};
Indeced Face List
Vertex array stores unique vertex coordinates only. Faces contain pointers to vertices rather than copying coordinates explicitly.
struct Vertex {float x, y, z;};
struct Face {Vretex* v1, v2, v3;};
struct Mesh {
Vertex verts[V];
Face faces[F];
};
Half-edge Mesh
To efficiently store and access vertices, faces, edges and neighbors.
struct HalfEdgeMesh {
Vertex* vert;
Halfedge* next;
Halfedge* prev;
Halfedge* pair;
Face* face;
};
struct Vertex {
float x, y, z;
Halfedge* edge;
};
struct Face {
Halfedge* edge;
};
struct Mesh {
Vertex verts[V];
Face faces[F];
Halfedge edges[3F];
};
What’s an advantage with Indexed Face lists?
Memory-efficient
What’s a disadvantage with Independent Face lists?
Redundant storage
Equation for face normal assuming CCO
ni = Ni / ||Ni||, Ni = (Vi,2 - V1) x (Vi,3 - V1)
Equation to normalize Normal
nu(V1) = n(Vi) / ||n(Vi)||
Equation for triangle area
½ ||Ni||
Equation for vertex normal
n(V1) = sum(ni)
Equation for area weighted vertex normal
n(V1) = sum(Ai*ni)