mirror of https://github.com/CGAL/cgal
rename facet proxy index map
This commit is contained in:
parent
2f6e3be1d8
commit
8a923bcc8b
|
|
@ -208,9 +208,9 @@ private:
|
||||||
|
|
||||||
// The facet proxy index map.
|
// The facet proxy index map.
|
||||||
std::map<face_descriptor, std::size_t> internal_fidx_map;
|
std::map<face_descriptor, std::size_t> internal_fidx_map;
|
||||||
boost::associative_property_map<std::map<face_descriptor, std::size_t> > seg_pmap;
|
boost::associative_property_map<std::map<face_descriptor, std::size_t> > fproxy_map;
|
||||||
// The attached anchor index of a vertex.
|
// The attached anchor index of a vertex.
|
||||||
std::map<vertex_descriptor, int> vertex_int_map;
|
std::map<vertex_descriptor, int> internal_vidx_map;
|
||||||
VertexAnchorMap vanchor_map;
|
VertexAnchorMap vanchor_map;
|
||||||
|
|
||||||
// Proxies.
|
// Proxies.
|
||||||
|
|
@ -234,8 +234,8 @@ public:
|
||||||
m_pmesh(NULL),
|
m_pmesh(NULL),
|
||||||
fit_error(NULL),
|
fit_error(NULL),
|
||||||
proxy_fitting(NULL),
|
proxy_fitting(NULL),
|
||||||
seg_pmap(internal_fidx_map),
|
fproxy_map(internal_fidx_map),
|
||||||
vanchor_map(vertex_int_map) {
|
vanchor_map(internal_vidx_map) {
|
||||||
GeomTraits traits;
|
GeomTraits traits;
|
||||||
vector_functor = traits.construct_vector_3_object();
|
vector_functor = traits.construct_vector_3_object();
|
||||||
scale_functor = traits.construct_scaled_vector_3_object();
|
scale_functor = traits.construct_scaled_vector_3_object();
|
||||||
|
|
@ -254,8 +254,8 @@ public:
|
||||||
point_pmap(_point_pmap),
|
point_pmap(_point_pmap),
|
||||||
fit_error(NULL),
|
fit_error(NULL),
|
||||||
proxy_fitting(NULL),
|
proxy_fitting(NULL),
|
||||||
seg_pmap(internal_fidx_map),
|
fproxy_map(internal_fidx_map),
|
||||||
vanchor_map(vertex_int_map) {
|
vanchor_map(internal_vidx_map) {
|
||||||
GeomTraits traits;
|
GeomTraits traits;
|
||||||
vector_functor = traits.construct_vector_3_object();
|
vector_functor = traits.construct_vector_3_object();
|
||||||
scale_functor = traits.construct_scaled_vector_3_object();
|
scale_functor = traits.construct_scaled_vector_3_object();
|
||||||
|
|
@ -296,9 +296,9 @@ public:
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
internal_fidx_map[f] = 0;
|
internal_fidx_map[f] = 0;
|
||||||
|
|
||||||
vertex_int_map.clear();
|
internal_vidx_map.clear();
|
||||||
BOOST_FOREACH(vertex_descriptor v, vertices(*m_pmesh))
|
BOOST_FOREACH(vertex_descriptor v, vertices(*m_pmesh))
|
||||||
vertex_int_map.insert(std::pair<vertex_descriptor, int>(v, 0));
|
internal_vidx_map.insert(std::pair<vertex_descriptor, int>(v, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -333,7 +333,7 @@ public:
|
||||||
// initialize a proxy and the proxy map to prepare for the insertion
|
// initialize a proxy and the proxy map to prepare for the insertion
|
||||||
proxies.push_back(fit_new_proxy(*(faces(*m_pmesh).first)));
|
proxies.push_back(fit_new_proxy(*(faces(*m_pmesh).first)));
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
seg_pmap[f] = 0;
|
fproxy_map[f] = 0;
|
||||||
const FT initial_err = compute_fitting_error();
|
const FT initial_err = compute_fitting_error();
|
||||||
|
|
||||||
// maximum allowed number of proxies
|
// maximum allowed number of proxies
|
||||||
|
|
@ -435,16 +435,16 @@ public:
|
||||||
void partition() {
|
void partition() {
|
||||||
#define CGAL_NOT_TAGGED_ID std::numeric_limits<std::size_t>::max()
|
#define CGAL_NOT_TAGGED_ID std::numeric_limits<std::size_t>::max()
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
seg_pmap[f] = CGAL_NOT_TAGGED_ID;
|
fproxy_map[f] = CGAL_NOT_TAGGED_ID;
|
||||||
|
|
||||||
std::priority_queue<FacetToIntegrate> facet_pqueue;
|
std::priority_queue<FacetToIntegrate> facet_pqueue;
|
||||||
for (std::size_t i = 0; i < proxies.size(); ++i) {
|
for (std::size_t i = 0; i < proxies.size(); ++i) {
|
||||||
face_descriptor f = proxies[i].seed;
|
face_descriptor f = proxies[i].seed;
|
||||||
seg_pmap[f] = i;
|
fproxy_map[f] = i;
|
||||||
|
|
||||||
BOOST_FOREACH(face_descriptor fadj, faces_around_face(halfedge(f, *m_pmesh), *m_pmesh)) {
|
BOOST_FOREACH(face_descriptor fadj, faces_around_face(halfedge(f, *m_pmesh), *m_pmesh)) {
|
||||||
if (fadj != boost::graph_traits<TriangleMesh>::null_face()
|
if (fadj != boost::graph_traits<TriangleMesh>::null_face()
|
||||||
&& seg_pmap[fadj] == CGAL_NOT_TAGGED_ID) {
|
&& fproxy_map[fadj] == CGAL_NOT_TAGGED_ID) {
|
||||||
facet_pqueue.push(FacetToIntegrate(
|
facet_pqueue.push(FacetToIntegrate(
|
||||||
fadj, i, (*fit_error)(fadj, proxies[i].px)));
|
fadj, i, (*fit_error)(fadj, proxies[i].px)));
|
||||||
}
|
}
|
||||||
|
|
@ -454,11 +454,11 @@ public:
|
||||||
while (!facet_pqueue.empty()) {
|
while (!facet_pqueue.empty()) {
|
||||||
const FacetToIntegrate c = facet_pqueue.top();
|
const FacetToIntegrate c = facet_pqueue.top();
|
||||||
facet_pqueue.pop();
|
facet_pqueue.pop();
|
||||||
if (seg_pmap[c.f] == CGAL_NOT_TAGGED_ID) {
|
if (fproxy_map[c.f] == CGAL_NOT_TAGGED_ID) {
|
||||||
seg_pmap[c.f] = c.px;
|
fproxy_map[c.f] = c.px;
|
||||||
BOOST_FOREACH(face_descriptor fadj, faces_around_face(halfedge(c.f, *m_pmesh), *m_pmesh)) {
|
BOOST_FOREACH(face_descriptor fadj, faces_around_face(halfedge(c.f, *m_pmesh), *m_pmesh)) {
|
||||||
if (fadj != boost::graph_traits<TriangleMesh>::null_face()
|
if (fadj != boost::graph_traits<TriangleMesh>::null_face()
|
||||||
&& seg_pmap[fadj] == CGAL_NOT_TAGGED_ID) {
|
&& fproxy_map[fadj] == CGAL_NOT_TAGGED_ID) {
|
||||||
facet_pqueue.push(FacetToIntegrate(
|
facet_pqueue.push(FacetToIntegrate(
|
||||||
fadj, c.px, (*fit_error)(fadj, proxies[c.px].px)));
|
fadj, c.px, (*fit_error)(fadj, proxies[c.px].px)));
|
||||||
}
|
}
|
||||||
|
|
@ -475,7 +475,7 @@ public:
|
||||||
void fit() {
|
void fit() {
|
||||||
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
px_facets[seg_pmap[f]].push_back(f);
|
px_facets[fproxy_map[f]].push_back(f);
|
||||||
|
|
||||||
// update proxy parameters and seed
|
// update proxy parameters and seed
|
||||||
for (std::size_t i = 0; i < proxies.size(); ++i)
|
for (std::size_t i = 0; i < proxies.size(); ++i)
|
||||||
|
|
@ -529,7 +529,7 @@ public:
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
if (found)
|
if (found)
|
||||||
break;
|
break;
|
||||||
if (seg_pmap[f] == px_worst) {
|
if (fproxy_map[f] == px_worst) {
|
||||||
if (f != proxies[px_worst].seed) {
|
if (f != proxies[px_worst].seed) {
|
||||||
tele_to = f;
|
tele_to = f;
|
||||||
found = true;
|
found = true;
|
||||||
|
|
@ -548,7 +548,7 @@ public:
|
||||||
return num_teleported;
|
return num_teleported;
|
||||||
|
|
||||||
// teleport to a facet to the worst region
|
// teleport to a facet to the worst region
|
||||||
seg_pmap[tele_to] = proxies.size();
|
fproxy_map[tele_to] = proxies.size();
|
||||||
proxies.push_back(fit_new_proxy(tele_to));
|
proxies.push_back(fit_new_proxy(tele_to));
|
||||||
|
|
||||||
merge(px_enlarged, px_merged);
|
merge(px_enlarged, px_merged);
|
||||||
|
|
@ -588,10 +588,10 @@ public:
|
||||||
FT err_sum(0);
|
FT err_sum(0);
|
||||||
std::list<face_descriptor> merged_patch;
|
std::list<face_descriptor> merged_patch;
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
std::size_t px_idx = seg_pmap[f];
|
std::size_t px_idx = fproxy_map[f];
|
||||||
if (px_idx == px1) {
|
if (px_idx == px1) {
|
||||||
err_sum += (*fit_error)(f, proxies[px_idx].px);
|
err_sum += (*fit_error)(f, proxies[px_idx].px);
|
||||||
seg_pmap[f] = px0;
|
fproxy_map[f] = px0;
|
||||||
merged_patch.push_back(f);
|
merged_patch.push_back(f);
|
||||||
}
|
}
|
||||||
else if (px_idx == px0) {
|
else if (px_idx == px0) {
|
||||||
|
|
@ -604,8 +604,8 @@ public:
|
||||||
proxies.erase(proxies.begin() + px1);
|
proxies.erase(proxies.begin() + px1);
|
||||||
// update facet proxy map
|
// update facet proxy map
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
if (seg_pmap[f] > px1)
|
if (fproxy_map[f] > px1)
|
||||||
--seg_pmap[f];
|
--fproxy_map[f];
|
||||||
}
|
}
|
||||||
|
|
||||||
FT err_merged(0);
|
FT err_merged(0);
|
||||||
|
|
@ -630,7 +630,7 @@ public:
|
||||||
|
|
||||||
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
px_facets[seg_pmap[f]].push_back(f);
|
px_facets[fproxy_map[f]].push_back(f);
|
||||||
|
|
||||||
// find best merge
|
// find best merge
|
||||||
MergedPair merged_set;
|
MergedPair merged_set;
|
||||||
|
|
@ -640,8 +640,8 @@ public:
|
||||||
BOOST_FOREACH(edge_descriptor e, edges(*m_pmesh)) {
|
BOOST_FOREACH(edge_descriptor e, edges(*m_pmesh)) {
|
||||||
if (CGAL::is_border(e, *m_pmesh))
|
if (CGAL::is_border(e, *m_pmesh))
|
||||||
continue;
|
continue;
|
||||||
std::size_t pxi = seg_pmap[face(halfedge(e, *m_pmesh), *m_pmesh)];
|
std::size_t pxi = fproxy_map[face(halfedge(e, *m_pmesh), *m_pmesh)];
|
||||||
std::size_t pxj = seg_pmap[face(opposite(halfedge(e, *m_pmesh), *m_pmesh), *m_pmesh)];
|
std::size_t pxj = fproxy_map[face(opposite(halfedge(e, *m_pmesh), *m_pmesh), *m_pmesh)];
|
||||||
if (pxi == pxj)
|
if (pxi == pxj)
|
||||||
continue;
|
continue;
|
||||||
if (pxi > pxj)
|
if (pxi > pxj)
|
||||||
|
|
@ -704,9 +704,9 @@ public:
|
||||||
if (count >= n)
|
if (count >= n)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (seg_pmap[f] == px && f != proxies[px].seed) {
|
if (fproxy_map[f] == px && f != proxies[px].seed) {
|
||||||
err += (*fit_error)(f, proxies[px].px);
|
err += (*fit_error)(f, proxies[px].px);
|
||||||
seg_pmap[f] = proxies.size();
|
fproxy_map[f] = proxies.size();
|
||||||
proxies.push_back(fit_new_proxy(f));
|
proxies.push_back(fit_new_proxy(f));
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
|
@ -728,7 +728,7 @@ public:
|
||||||
// initialize all vertex anchor status
|
// initialize all vertex anchor status
|
||||||
enum Vertex_status { NO_ANCHOR = -1 };
|
enum Vertex_status { NO_ANCHOR = -1 };
|
||||||
BOOST_FOREACH(vertex_descriptor v, vertices(*m_pmesh))
|
BOOST_FOREACH(vertex_descriptor v, vertices(*m_pmesh))
|
||||||
vertex_int_map[v] = static_cast<int>(NO_ANCHOR);
|
internal_vidx_map[v] = static_cast<int>(NO_ANCHOR);
|
||||||
anchors.clear();
|
anchors.clear();
|
||||||
borders.clear();
|
borders.clear();
|
||||||
tris.clear();
|
tris.clear();
|
||||||
|
|
@ -753,7 +753,7 @@ public:
|
||||||
template <typename FacetProxyMap>
|
template <typename FacetProxyMap>
|
||||||
void get_proxy_map(FacetProxyMap &facet_proxy_map) {
|
void get_proxy_map(FacetProxyMap &facet_proxy_map) {
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
facet_proxy_map[f] = seg_pmap[f];
|
facet_proxy_map[f] = fproxy_map[f];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -867,7 +867,7 @@ private:
|
||||||
// initialize a proxy and the proxy map to prepare for the insertion
|
// initialize a proxy and the proxy map to prepare for the insertion
|
||||||
proxies.push_back(fit_new_proxy(*(faces(*m_pmesh).first)));
|
proxies.push_back(fit_new_proxy(*(faces(*m_pmesh).first)));
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
seg_pmap[f] = 0;
|
fproxy_map[f] = 0;
|
||||||
|
|
||||||
insert_proxy_furthest(initial_px - 1, inner_iteration);
|
insert_proxy_furthest(initial_px - 1, inner_iteration);
|
||||||
return proxies.size();
|
return proxies.size();
|
||||||
|
|
@ -914,7 +914,7 @@ private:
|
||||||
std::vector<face_descriptor> max_facet(proxies.size());
|
std::vector<face_descriptor> max_facet(proxies.size());
|
||||||
|
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
std::size_t px_idx = seg_pmap[f];
|
std::size_t px_idx = fproxy_map[f];
|
||||||
FT err = (*fit_error)(f, proxies[px_idx].px);
|
FT err = (*fit_error)(f, proxies[px_idx].px);
|
||||||
px_error[px_idx] += err;
|
px_error[px_idx] += err;
|
||||||
|
|
||||||
|
|
@ -1012,7 +1012,7 @@ private:
|
||||||
|
|
||||||
std::size_t num_inserted = 0;
|
std::size_t num_inserted = 0;
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
const std::size_t px_id = seg_pmap[f];
|
const std::size_t px_id = fproxy_map[f];
|
||||||
if (proxies[px_id].seed == f)
|
if (proxies[px_id].seed == f)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -1082,7 +1082,7 @@ private:
|
||||||
FT compute_fitting_error() {
|
FT compute_fitting_error() {
|
||||||
FT sum_error(0);
|
FT sum_error(0);
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
sum_error += (*fit_error)(f, proxies[seg_pmap[f]].px);
|
sum_error += (*fit_error)(f, proxies[fproxy_map[f]].px);
|
||||||
return sum_error;
|
return sum_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1094,7 +1094,7 @@ private:
|
||||||
FT compute_fitting_error(std::vector<FT> &px_error) {
|
FT compute_fitting_error(std::vector<FT> &px_error) {
|
||||||
FT sum_error(0);
|
FT sum_error(0);
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh)) {
|
||||||
const std::size_t px_idx = seg_pmap[f];
|
const std::size_t px_idx = fproxy_map[f];
|
||||||
FT err = (*fit_error)(f, proxies[px_idx].px);
|
FT err = (*fit_error)(f, proxies[px_idx].px);
|
||||||
px_error[px_idx] += err;
|
px_error[px_idx] += err;
|
||||||
sum_error += err;
|
sum_error += err;
|
||||||
|
|
@ -1110,7 +1110,7 @@ private:
|
||||||
// fit proxy planes, areas, normals
|
// fit proxy planes, areas, normals
|
||||||
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
std::vector<std::list<face_descriptor> > px_facets(proxies.size());
|
||||||
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
BOOST_FOREACH(face_descriptor f, faces(*m_pmesh))
|
||||||
px_facets[seg_pmap[f]].push_back(f);
|
px_facets[fproxy_map[f]].push_back(f);
|
||||||
|
|
||||||
BOOST_FOREACH(const std::list<face_descriptor> &px_patch, px_facets) {
|
BOOST_FOREACH(const std::list<face_descriptor> &px_patch, px_facets) {
|
||||||
Plane_3 fit_plane = if_pca_plane ?
|
Plane_3 fit_plane = if_pca_plane ?
|
||||||
|
|
@ -1121,9 +1121,9 @@ private:
|
||||||
FT area(0);
|
FT area(0);
|
||||||
BOOST_FOREACH(face_descriptor f, px_patch) {
|
BOOST_FOREACH(face_descriptor f, px_patch) {
|
||||||
halfedge_descriptor he = halfedge(f, *m_pmesh);
|
halfedge_descriptor he = halfedge(f, *m_pmesh);
|
||||||
const Point_3 p0 = point_pmap[source(he, *m_pmesh)];
|
const Point_3 &p0 = point_pmap[source(he, *m_pmesh)];
|
||||||
const Point_3 p1 = point_pmap[target(he, *m_pmesh)];
|
const Point_3 &p1 = point_pmap[target(he, *m_pmesh)];
|
||||||
const Point_3 p2 = point_pmap[target(next(he, *m_pmesh), *m_pmesh)];
|
const Point_3 &p2 = point_pmap[target(next(he, *m_pmesh), *m_pmesh)];
|
||||||
FT farea(std::sqrt(CGAL::to_double(CGAL::squared_area(p0, p1, p2))));
|
FT farea(std::sqrt(CGAL::to_double(CGAL::squared_area(p0, p1, p2))));
|
||||||
Vector_3 fnorm = CGAL::unit_normal(p0, p1, p2);
|
Vector_3 fnorm = CGAL::unit_normal(p0, p1, p2);
|
||||||
|
|
||||||
|
|
@ -1146,7 +1146,7 @@ private:
|
||||||
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(vtx, *m_pmesh)) {
|
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(vtx, *m_pmesh)) {
|
||||||
if (CGAL::is_border_edge(h, *m_pmesh))
|
if (CGAL::is_border_edge(h, *m_pmesh))
|
||||||
++border_count;
|
++border_count;
|
||||||
else if (seg_pmap[face(h, *m_pmesh)] != seg_pmap[face(opposite(h, *m_pmesh), *m_pmesh)])
|
else if (fproxy_map[face(h, *m_pmesh)] != fproxy_map[face(opposite(h, *m_pmesh), *m_pmesh)])
|
||||||
++border_count;
|
++border_count;
|
||||||
}
|
}
|
||||||
if (border_count >= 3)
|
if (border_count >= 3)
|
||||||
|
|
@ -1164,7 +1164,7 @@ private:
|
||||||
BOOST_FOREACH(halfedge_descriptor h, halfedges(*m_pmesh)) {
|
BOOST_FOREACH(halfedge_descriptor h, halfedges(*m_pmesh)) {
|
||||||
if (!CGAL::is_border(h, *m_pmesh)
|
if (!CGAL::is_border(h, *m_pmesh)
|
||||||
&& (CGAL::is_border(opposite(h, *m_pmesh), *m_pmesh)
|
&& (CGAL::is_border(opposite(h, *m_pmesh), *m_pmesh)
|
||||||
|| seg_pmap[face(h, *m_pmesh)] != seg_pmap[face(opposite(h, *m_pmesh), *m_pmesh)]))
|
|| fproxy_map[face(h, *m_pmesh)] != fproxy_map[face(opposite(h, *m_pmesh), *m_pmesh)]))
|
||||||
he_candidates.insert(h);
|
he_candidates.insert(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1304,7 +1304,7 @@ private:
|
||||||
std::set<std::size_t> px_set;
|
std::set<std::size_t> px_set;
|
||||||
BOOST_FOREACH(face_descriptor f, faces_around_target(halfedge(v, *m_pmesh), *m_pmesh)) {
|
BOOST_FOREACH(face_descriptor f, faces_around_target(halfedge(v, *m_pmesh), *m_pmesh)) {
|
||||||
if (f != boost::graph_traits<TriangleMesh>::null_face())
|
if (f != boost::graph_traits<TriangleMesh>::null_face())
|
||||||
px_set.insert(seg_pmap[f]);
|
px_set.insert(fproxy_map[f]);
|
||||||
}
|
}
|
||||||
BOOST_FOREACH(std::size_t p, px_set)
|
BOOST_FOREACH(std::size_t p, px_set)
|
||||||
vertex_patches[p].push_back(to_sgv_map[v]);
|
vertex_patches[p].push_back(to_sgv_map[v]);
|
||||||
|
|
@ -1424,9 +1424,9 @@ private:
|
||||||
* @param[in/out] he_start region border halfedge
|
* @param[in/out] he_start region border halfedge
|
||||||
*/
|
*/
|
||||||
void walk_to_next_border_halfedge(halfedge_descriptor &he_start) {
|
void walk_to_next_border_halfedge(halfedge_descriptor &he_start) {
|
||||||
const std::size_t px_idx = seg_pmap[face(he_start, *m_pmesh)];
|
const std::size_t px_idx = fproxy_map[face(he_start, *m_pmesh)];
|
||||||
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(he_start, *m_pmesh)) {
|
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(he_start, *m_pmesh)) {
|
||||||
if (CGAL::is_border(h, *m_pmesh) || seg_pmap[face(h, *m_pmesh)] != px_idx) {
|
if (CGAL::is_border(h, *m_pmesh) || fproxy_map[face(h, *m_pmesh)] != px_idx) {
|
||||||
he_start = opposite(h, *m_pmesh);
|
he_start = opposite(h, *m_pmesh);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1491,10 +1491,10 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
// suppose the proxy normal angle is acute
|
// suppose the proxy normal angle is acute
|
||||||
std::size_t px_left = seg_pmap[face(he_first, *m_pmesh)];
|
std::size_t px_left = fproxy_map[face(he_first, *m_pmesh)];
|
||||||
std::size_t px_right = px_left;
|
std::size_t px_right = px_left;
|
||||||
if (!CGAL::is_border(opposite(he_first, *m_pmesh), *m_pmesh))
|
if (!CGAL::is_border(opposite(he_first, *m_pmesh), *m_pmesh))
|
||||||
px_right = seg_pmap[face(opposite(he_first, *m_pmesh), *m_pmesh)];
|
px_right = fproxy_map[face(opposite(he_first, *m_pmesh), *m_pmesh)];
|
||||||
FT norm_sin(1.0);
|
FT norm_sin(1.0);
|
||||||
if (!CGAL::is_border(opposite(he_first, *m_pmesh), *m_pmesh)) {
|
if (!CGAL::is_border(opposite(he_first, *m_pmesh), *m_pmesh)) {
|
||||||
Vector_3 vec = CGAL::cross_product(
|
Vector_3 vec = CGAL::cross_product(
|
||||||
|
|
@ -1568,7 +1568,7 @@ private:
|
||||||
std::set<std::size_t> px_set;
|
std::set<std::size_t> px_set;
|
||||||
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(v, *m_pmesh)) {
|
BOOST_FOREACH(halfedge_descriptor h, halfedges_around_target(v, *m_pmesh)) {
|
||||||
if (!CGAL::is_border(h, *m_pmesh))
|
if (!CGAL::is_border(h, *m_pmesh))
|
||||||
px_set.insert(seg_pmap[face(h, *m_pmesh)]);
|
px_set.insert(fproxy_map[face(h, *m_pmesh)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// construct an anchor from vertex and the incident proxies
|
// construct an anchor from vertex and the incident proxies
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue