HalfEdgeMesh |
Half-Edge Mesh data structure
While it's possible to create non-triangular faces, this code assumes
triangular faces in several locations
mesh.edges, mesh.vertices, and mesh.faces are HashMaps containing reference-counted Pointers
to the mesh contents. Usually, these Rc values are the last values to exist. When they
are destroyed, the pointed-to contents are destroyed as well.
Vertex, edge, and face ids are mesh-specific and unique only within a certain mesh
Integer overflow is undefined in Rust, but checked in debug builds. I think this means
that it's possible to generate the same id twice, after 232-1 ids have been made.
Try not to make more than 232-1 of any one of them, stuff might get messed up.
TODO: Better error reporting, using a custom error type
See also: http://blog.burntsushi.net/rust-error-handling/
Probably should do it whenever faces are added or a vertex is modified ?
TODO: Better way of updating face-specific data like center and normals
|