mirror of https://github.com/CGAL/cgal
More optionals for non-nullable maps
This commit is contained in:
parent
48b502e5bb
commit
c67bec24cc
|
|
@ -24,10 +24,10 @@ template < class TriangleMesh,
|
|||
class VertexPointMap = typename boost::property_map<TriangleMesh,vertex_point_t>::type >
|
||||
struct Triangle_from_face_descriptor_map{
|
||||
typename std::remove_const_t<TriangleMesh>* m_tm;
|
||||
VertexPointMap m_vpm;
|
||||
std::optional<VertexPointMap> m_vpm;
|
||||
|
||||
Triangle_from_face_descriptor_map()
|
||||
: m_tm(nullptr)
|
||||
: m_tm(nullptr), m_vpm()
|
||||
{}
|
||||
|
||||
Triangle_from_face_descriptor_map(TriangleMesh const* tm)
|
||||
|
|
@ -58,9 +58,9 @@ struct Triangle_from_face_descriptor_map{
|
|||
std::remove_const_t<TriangleMesh>& tm = *(pmap.m_tm);
|
||||
CGAL_precondition(halfedge(f,tm) == next(next(next(halfedge(f,tm),tm),tm),tm));
|
||||
|
||||
return value_type( get(pmap.m_vpm, target(halfedge(f,tm),tm)),
|
||||
get(pmap.m_vpm, target(next(halfedge(f,tm),tm),tm)),
|
||||
get(pmap.m_vpm, source(halfedge(f,tm),tm)) );
|
||||
return value_type( get(*pmap.m_vpm, target(halfedge(f,tm),tm)),
|
||||
get(*pmap.m_vpm, target(next(halfedge(f,tm),tm),tm)),
|
||||
get(*pmap.m_vpm, source(halfedge(f,tm),tm)) );
|
||||
}
|
||||
|
||||
inline friend
|
||||
|
|
@ -71,9 +71,9 @@ struct Triangle_from_face_descriptor_map{
|
|||
std::remove_const_t<TriangleMesh> & tm = *(pmap.m_tm);
|
||||
CGAL_precondition(halfedge(f.first,tm) == next(next(next(halfedge(f.first,tm),tm),tm),tm));
|
||||
|
||||
return value_type( get(pmap.m_vpm, target(halfedge(f.first,tm),tm)),
|
||||
get(pmap.m_vpm, target(next(halfedge(f.first,tm),tm),tm)),
|
||||
get(pmap.m_vpm, source(halfedge(f.first,tm),tm)) );
|
||||
return value_type( get(*pmap.m_vpm, target(halfedge(f.first,tm),tm)),
|
||||
get(*pmap.m_vpm, target(next(halfedge(f.first,tm),tm),tm)),
|
||||
get(*pmap.m_vpm, source(halfedge(f.first,tm),tm)) );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ template <class PolygonMesh,
|
|||
class VertexPointMap = typename boost::property_map<PolygonMesh,vertex_point_t>::type >
|
||||
struct One_point_from_face_descriptor_map{
|
||||
One_point_from_face_descriptor_map()
|
||||
: m_pm(nullptr)
|
||||
: m_pm(nullptr), m_vpm()
|
||||
{}
|
||||
|
||||
One_point_from_face_descriptor_map(PolygonMesh const * g)
|
||||
|
|
@ -146,7 +146,7 @@ struct One_point_from_face_descriptor_map{
|
|||
{}
|
||||
|
||||
std::remove_const_t<PolygonMesh>* m_pm;
|
||||
VertexPointMap m_vpm;
|
||||
std::optional<VertexPointMap> m_vpm;
|
||||
|
||||
//classical typedefs
|
||||
typedef typename boost::graph_traits<PolygonMesh>::face_descriptor key_type;
|
||||
|
|
@ -160,7 +160,7 @@ struct One_point_from_face_descriptor_map{
|
|||
get(const One_point_from_face_descriptor_map<PolygonMesh,VertexPointMap>& m,
|
||||
key_type f)
|
||||
{
|
||||
return get(m.m_vpm, target(halfedge(f, *m.m_pm), *m.m_pm));
|
||||
return get(*m.m_vpm, target(halfedge(f, *m.m_pm), *m.m_pm));
|
||||
}
|
||||
|
||||
inline friend
|
||||
|
|
@ -168,7 +168,7 @@ struct One_point_from_face_descriptor_map{
|
|||
get(const One_point_from_face_descriptor_map<PolygonMesh,VertexPointMap>& m,
|
||||
const std::pair<key_type, const PolygonMesh*>& f)
|
||||
{
|
||||
return get(m.m_vpm, target(halfedge(f.first, *m.m_pm), *m.m_pm));
|
||||
return get(*m.m_vpm, target(halfedge(f.first, *m.m_pm), *m.m_pm));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -151,8 +151,8 @@ public :
|
|||
pen.setWidth(0);
|
||||
painter->setPen(pen);
|
||||
painter->setBrush(brush);
|
||||
SMesh::Property_map<halfedge_descriptor, float> u;
|
||||
SMesh::Property_map<halfedge_descriptor, float> v;
|
||||
std::optional<SMesh::Property_map<halfedge_descriptor, float>> u;
|
||||
std::optional<SMesh::Property_map<halfedge_descriptor, float>> v;
|
||||
|
||||
u = graph->add_property_map<halfedge_descriptor, float>
|
||||
("h:u", 0.0f).first;
|
||||
|
|
@ -167,11 +167,11 @@ public :
|
|||
boost::graph_traits<SMesh>::face_descriptor f(*fi);
|
||||
QPointF points[3];
|
||||
boost::graph_traits<SMesh>::halfedge_descriptor h = halfedge(f, *graph);;
|
||||
points[0] = QPointF(get(u, h), -get(v, h));
|
||||
points[0] = QPointF(get(*u, h), -get(*v, h));
|
||||
h = next(halfedge(f, *graph), *graph);
|
||||
points[1] = QPointF(get(u, h), -get(v, h));
|
||||
points[1] = QPointF(get(*u, h), -get(*v, h));
|
||||
h = next(next(halfedge(f, *graph), *graph), *graph);
|
||||
points[2] = QPointF(get(u, h), -get(v, h));
|
||||
points[2] = QPointF(get(*u, h), -get(*v, h));
|
||||
painter->drawPolygon(points,3);
|
||||
}
|
||||
|
||||
|
|
@ -515,7 +515,7 @@ public Q_SLOTS:
|
|||
sm->add_property_map<SMesh::Vertex_index, Point_3>("v:uv3").first;
|
||||
for(SMesh::Vertex_index v : sm->vertices())
|
||||
{
|
||||
uv_map_3[v] = Point_3(uv_map[v][0], uv_map[v]
|
||||
uv_map_3.value()[v] = Point_3(uv_map[v][0], uv_map[v]
|
||||
[1], 0);
|
||||
if(uv_map[v][0] > xmax)
|
||||
xmax = uv_map[v][0];
|
||||
|
|
@ -582,7 +582,7 @@ public Q_SLOTS:
|
|||
}
|
||||
|
||||
// build AABB-tree for face location queries
|
||||
Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3);
|
||||
Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3.value());
|
||||
|
||||
visu_item = new Scene_polylines_item;
|
||||
connect(visu_item, &Scene_polylines_item::aboutToBeDestroyed, this,
|
||||
|
|
@ -609,7 +609,7 @@ public Q_SLOTS:
|
|||
|
||||
Face_location loc = Surface_mesh_shortest_path::locate(
|
||||
Point_3(p_2.x(), p_2.y(), 0),
|
||||
aabb_tree, *sm, uv_map_3);
|
||||
aabb_tree, *sm, uv_map_3.value());
|
||||
visu_item->polylines.back().push_back(
|
||||
Surface_mesh_shortest_path::point(loc.first, loc.second, *sm, sm->points()));
|
||||
}
|
||||
|
|
@ -630,12 +630,8 @@ public Q_SLOTS:
|
|||
{
|
||||
component->insert(*bfit);
|
||||
}
|
||||
SMesh::Property_map<halfedge_descriptor, float> umap;
|
||||
SMesh::Property_map<halfedge_descriptor, float> vmap;
|
||||
umap = sm->add_property_map<halfedge_descriptor, float>
|
||||
("h:u", 0.0f).first;
|
||||
vmap = sm->add_property_map<halfedge_descriptor, float>
|
||||
("h:v", 0.0f).first;
|
||||
auto umap = sm->add_property_map<halfedge_descriptor, float>("h:u", 0.0f).first;
|
||||
auto vmap = sm->add_property_map<halfedge_descriptor, float>("h:v", 0.0f).first;
|
||||
SMesh::Halfedge_iterator it;
|
||||
SMesh::Property_map<SMesh::Vertex_index, EPICK::Point_2> uv_map =
|
||||
sm->property_map<SMesh::Vertex_index, EPICK::Point_2>("v:uv").first;
|
||||
|
|
@ -886,7 +882,7 @@ private:
|
|||
TriangleMesh& tm)
|
||||
{
|
||||
|
||||
Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3);
|
||||
Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3.value());
|
||||
typedef typename boost::graph_traits<TriangleMesh>::vertex_descriptor vertex_descriptor;
|
||||
|
||||
typedef std::map<typename CDT::Vertex_handle, vertex_descriptor> Map;
|
||||
|
|
@ -907,7 +903,7 @@ private:
|
|||
const EPICK::Point_2& pt=fit->vertex(i)->point();
|
||||
Face_location loc = Surface_mesh_shortest_path::locate(
|
||||
Point_3(pt.x(), pt.y(), 0),
|
||||
aabb_tree, *sm, uv_map_3);
|
||||
aabb_tree, *sm, uv_map_3.value());
|
||||
it->second = add_vertex(Surface_mesh_shortest_path::point(loc.first, loc.second,
|
||||
*sm, sm->points()), tm);
|
||||
}
|
||||
|
|
@ -955,7 +951,7 @@ private:
|
|||
EPICK::Vector_2 translation;
|
||||
EPICK::Aff_transformation_2 transfo;
|
||||
std::vector<std::vector<EPICK::Point_2> > polylines;
|
||||
SMesh::Property_map<SMesh::Vertex_index, Point_3> uv_map_3;
|
||||
std::optional<SMesh::Property_map<SMesh::Vertex_index, Point_3>> uv_map_3;
|
||||
SMesh* sm;
|
||||
float xmin, xmax, ymin, ymax;
|
||||
int pointsize;
|
||||
|
|
|
|||
Loading…
Reference in New Issue