Readme.md 1.17 KB
Newer Older
Philip Trettner's avatar
Philip Trettner committed
1
2
# PolyMesh

Philip Trettner's avatar
Philip Trettner committed
3
A lightweight half-edge data structure.
Philip Trettner's avatar
Philip Trettner committed
4
5
6

Best used with glm and glow.

Philip Trettner's avatar
Philip Trettner committed
7
8
9
10
11
12
## TODO

* Properties
* Algorithms
* Tests
* std::less and std::hash for _index (and maybe _handle)
13
* attribute transformations (also between different types)
Philip Trettner's avatar
Philip Trettner committed
14
* Debug: store compactify generation in handles to check for invalidation
15
16
17
* Debug: insert is_removed assertions into handle access
* Switch primitives and valid_primitives, check if compact flag is inlined
* Test self-adjacent faces
Philip Trettner's avatar
Philip Trettner committed
18
* smart ranges: filter, map
19
* vector, set, map -> range
20
* opposite edges (from vertex)
Philip Trettner's avatar
Philip Trettner committed
21
* cotangents weights etc.
22
* smoothing
Philip Trettner's avatar
Philip Trettner committed
23
* make handle.<primitives>() contain only valid ones and provide an all_<primitives>() version
Philip Trettner's avatar
Philip Trettner committed
24
25
* _copy versions of topological operations that copy attributes
* vertex split?
26
* half-edge collapse
Philip Trettner's avatar
Philip Trettner committed
27
* normal, tangent, bitangent computation
28
29
* attribute iterator
* primitive sort functions, better remap function, cache optimization
Philip Trettner's avatar
Philip Trettner committed
30
* structure of arrays instead of AOS
Philip Trettner's avatar
Philip Trettner committed
31
* lowlevel API that allows direct half-edge manipulation and does not fix boundaries (but also mirrors high level one)
Philip Trettner's avatar
Philip Trettner committed
32
33
34
35
36
* primitive collection sort and sort_by functions

Low-level TODO:

* face_of(opposite(h)) -> opposite_face_of