On weights, added cotangent weight implementation which is invariant under edge orientation (a->b vs b->a returns the same weight which is expected), (previous version was returning slightly different weights), and some more improvements (added an alternative (most prob faster) implementation for tan(Q/2))
Adding a custom pmap which can be useful for deforming large polys with small ROIs,
-------
Main change is now internal storage size only depends on ROI.
We pass on all vertices/edges for once in constructor to initialize index pmaps.
This part should be removed since it iterates over all vertices, we can achieve that by a requiring that supplied vertex_index_map, and edge_index_map should be filled by 0.
So the question is how can it be different than looping over all vertices ?
The user might provide a custom pmap, such as Polyhedron_vertex_zero_default_index_map, (added in demo Property_maps_for_edit_plugin.h) which use an internal map and returns 0 for not found keys (so no actual initialization takes place).
Another cleanup is to only #include what you need in this file.
For example fstream is not needed here.
Removed all the unrelated header files.
Avoid using statements.
Removed "using namespace *** ".
Note that you make a copy of the polyhedron,
that is you deform the copy not the original.
Not sure that this is your intention.
Yes this is my intention.
Also intialize the data member in the initialization section
of the constructor
Do you mean add the initialization of roi, hld and dsplc into constructor function?
I have no idea if #pragma once compiles with g++.
Replaced it by #ifndef....