mirror of https://github.com/CGAL/cgal
WIP
This commit is contained in:
parent
01be9610ee
commit
add9c72a46
|
|
@ -470,12 +470,10 @@ namespace Heat_method_3 {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CGAL_precondition(is_triangle_mesh(tm));
|
CGAL_precondition(is_triangle_mesh(tm));
|
||||||
//vertex_id_map = get(Vertex_property_tag(),const_cast<TriangleMesh&>(tm));
|
|
||||||
Index i = 0;
|
Index i = 0;
|
||||||
BOOST_FOREACH(vertex_descriptor vd, vertices(tm)){
|
BOOST_FOREACH(vertex_descriptor vd, vertices(tm)){
|
||||||
put(vertex_id_map, vd, i++);
|
put(vertex_id_map, vd, i++);
|
||||||
}
|
}
|
||||||
//face_id_map = get(Face_property_tag(), const_cast<TriangleMesh&>(tm));
|
|
||||||
Index face_i = 0;
|
Index face_i = 0;
|
||||||
BOOST_FOREACH(face_descriptor fd, faces(tm)){
|
BOOST_FOREACH(face_descriptor fd, faces(tm)){
|
||||||
put(face_id_map, fd, face_i++);
|
put(face_id_map, fd, face_i++);
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,9 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
struct IDT_vertex_point_property_map;
|
struct IDT_vertex_point_property_map;
|
||||||
|
|
||||||
|
|
||||||
|
template <typename IDT, typename PM>
|
||||||
|
struct IDT_vertex_distance_property_map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class `Intrinsic_Delaunay_Triangulation_3` is a ...
|
* Class `Intrinsic_Delaunay_Triangulation_3` is a ...
|
||||||
* \tparam TriangleMesh a triangulated surface mesh, model of `FaceGraph` and `HalfedgeListGraph`
|
* \tparam TriangleMesh a triangulated surface mesh, model of `FaceGraph` and `HalfedgeListGraph`
|
||||||
|
|
@ -86,14 +89,14 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
|
|
||||||
template <typename TriangleMesh,
|
template <typename TriangleMesh,
|
||||||
typename Traits,
|
typename Traits,
|
||||||
typename HalfedgeCoordinateMap,
|
typename VertexDistanceMap,
|
||||||
typename VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::const_type,
|
typename VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::const_type,
|
||||||
typename FaceIndexMap = typename boost::property_map< TriangleMesh, face_index_t>::const_type,
|
typename FaceIndexMap = typename boost::property_map< TriangleMesh, face_index_t>::const_type,
|
||||||
typename EdgeIndexMap = typename boost::property_map< TriangleMesh, boost::edge_index_t>::const_type,
|
typename EdgeIndexMap = typename boost::property_map< TriangleMesh, boost::edge_index_t>::const_type,
|
||||||
typename LA = Intrinsic_Delaunay_Triangulation_Eigen_traits_3>
|
typename LA = Intrinsic_Delaunay_Triangulation_Eigen_traits_3>
|
||||||
struct Intrinsic_Delaunay_Triangulation_3 // AF was class fix later
|
struct Intrinsic_Delaunay_Triangulation_3 // AF was class fix later
|
||||||
{
|
{
|
||||||
typedef Intrinsic_Delaunay_Triangulation_3<TriangleMesh,Traits,HalfedgeCoordinateMap,VertexPointMap,FaceIndexMap,EdgeIndexMap,LA> Self;
|
typedef Intrinsic_Delaunay_Triangulation_3<TriangleMesh,Traits,VertexDistanceMap,VertexPointMap,FaceIndexMap,EdgeIndexMap,LA> Self;
|
||||||
|
|
||||||
typedef typename boost::graph_traits<TriangleMesh> graph_traits;
|
typedef typename boost::graph_traits<TriangleMesh> graph_traits;
|
||||||
typedef typename graph_traits::vertex_descriptor vertex_descriptor;
|
typedef typename graph_traits::vertex_descriptor vertex_descriptor;
|
||||||
|
|
@ -114,6 +117,9 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
|
|
||||||
typedef typename boost::property_traits<VertexPointMap>::reference VertexPointMap_reference;
|
typedef typename boost::property_traits<VertexPointMap>::reference VertexPointMap_reference;
|
||||||
|
|
||||||
|
typedef CGAL::dynamic_halfedge_property_t<Point_2> Halfedge_coordinate_tag;
|
||||||
|
typedef typename boost::property_map<TriangleMesh, Halfedge_coordinate_tag >::type HalfedgeCoordinateMap;
|
||||||
|
|
||||||
typedef typename boost::graph_traits<TriangleMesh>::vertices_size_type vertices_size_type;
|
typedef typename boost::graph_traits<TriangleMesh>::vertices_size_type vertices_size_type;
|
||||||
typedef typename boost::graph_traits<TriangleMesh>::edges_size_type edges_size_type;
|
typedef typename boost::graph_traits<TriangleMesh>::edges_size_type edges_size_type;
|
||||||
typedef typename boost::graph_traits<TriangleMesh>::faces_size_type faces_size_type;
|
typedef typename boost::graph_traits<TriangleMesh>::faces_size_type faces_size_type;
|
||||||
|
|
@ -132,8 +138,12 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
typedef typename std::stack<edge_descriptor, std::list<edge_descriptor> > edge_stack;
|
typedef typename std::stack<edge_descriptor, std::list<edge_descriptor> > edge_stack;
|
||||||
|
|
||||||
friend struct IDT_vertex_point_property_map<Self>;
|
friend struct IDT_vertex_point_property_map<Self>;
|
||||||
|
friend struct IDT_vertex_distance_property_map<Self,VertexDistanceMap>;
|
||||||
|
|
||||||
public: // for the BGL functions below. They should maybe become friend?
|
public: // for the BGL functions below. They should maybe become friend?
|
||||||
|
|
||||||
|
typedef IDT_vertex_distance_property_map<Self,VertexDistanceMap> Vertex_distance_map;
|
||||||
|
|
||||||
struct Vertex_descriptor {
|
struct Vertex_descriptor {
|
||||||
halfedge_descriptor hd;
|
halfedge_descriptor hd;
|
||||||
|
|
||||||
|
|
@ -145,6 +155,11 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
Vertex_descriptor(const halfedge_descriptor& hd)
|
Vertex_descriptor(const halfedge_descriptor& hd)
|
||||||
: hd(hd)
|
: hd(hd)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
explicit Vertex_descriptor(const vertex_descriptor vd, const TriangleMesh& tm)
|
||||||
|
: hd(halfedge(vd,tm))
|
||||||
|
{}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Vertex_iterator_functor
|
struct Vertex_iterator_functor
|
||||||
|
|
@ -165,16 +180,16 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Intrinsic_Delaunay_Triangulation_3(TriangleMesh& tm, HalfedgeCoordinateMap hcm)
|
Intrinsic_Delaunay_Triangulation_3(TriangleMesh& tm, VertexDistanceMap vdm)
|
||||||
: tm(tm), hcm(hcm)
|
: tm(tm), vdm(*this,vdm), hcm(get(Halfedge_coordinate_tag(), tm))
|
||||||
{
|
{
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Intrinsic_Delaunay_Triangulation_3(TriangleMesh& tm, HalfedgeCoordinateMap hcm, FaceIndexMap fpm, EdgeIndexMap epm)
|
Intrinsic_Delaunay_Triangulation_3(TriangleMesh& tm, VertexDistanceMap vdm, FaceIndexMap fpm, EdgeIndexMap epm)
|
||||||
: tm(tm), hcm(hcm), fpm(fpm), epm(epm)
|
: tm(tm), vdm(*this,vdm), fpm(fpm), epm(epm), hcm(get(Halfedge_coordinate_tag(), tm))
|
||||||
{
|
{
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
|
|
@ -192,11 +207,19 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
return tm;
|
return tm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const HalfedgeCoordinateMap& hcmap() const
|
const HalfedgeCoordinateMap& hcmap() const
|
||||||
{
|
{
|
||||||
return hcm;
|
return hcm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Vertex_distance_map vertex_distance_map() const
|
||||||
|
{
|
||||||
|
return vdm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
double get_cotan_weight(edge_descriptor ed)
|
double get_cotan_weight(edge_descriptor ed)
|
||||||
{
|
{
|
||||||
double cotan_weight = 0;
|
double cotan_weight = 0;
|
||||||
|
|
@ -402,6 +425,7 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
}
|
}
|
||||||
//todo:: determine which can be const
|
//todo:: determine which can be const
|
||||||
TriangleMesh& tm;
|
TriangleMesh& tm;
|
||||||
|
Vertex_distance_map vdm;
|
||||||
VertexPointMap vpm;
|
VertexPointMap vpm;
|
||||||
FaceIndexMap fpm;
|
FaceIndexMap fpm;
|
||||||
EdgeIndexMap epm;
|
EdgeIndexMap epm;
|
||||||
|
|
@ -419,14 +443,14 @@ namespace boost {
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
struct graph_traits<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> > {
|
struct graph_traits<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> > {
|
||||||
|
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> Mesh;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> Mesh;
|
||||||
typedef typename Mesh::Vertex_descriptor vertex_descriptor;
|
typedef typename Mesh::Vertex_descriptor vertex_descriptor;
|
||||||
typedef boost::transform_iterator<
|
typedef boost::transform_iterator<
|
||||||
typename Mesh::Vertex_iterator_functor,
|
typename Mesh::Vertex_iterator_functor,
|
||||||
|
|
@ -450,59 +474,59 @@ namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<TM>::vertices_size_type
|
typename boost::graph_traits<TM>::vertices_size_type
|
||||||
num_vertices(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
num_vertices(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return num_vertices(idt.triangle_mesh());
|
return num_vertices(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<TM>::edges_size_type
|
typename boost::graph_traits<TM>::edges_size_type
|
||||||
num_edges(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
num_edges(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return num_edges(idt.triangle_mesh());
|
return num_edges(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<TM>::faces_size_type
|
typename boost::graph_traits<TM>::faces_size_type
|
||||||
num_faces(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
num_faces(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return num_faces(idt.triangle_mesh());
|
return num_faces(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename std::pair<typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>>::vertex_iterator,
|
typename std::pair<typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>>::vertex_iterator,
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>>::vertex_iterator>
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>>::vertex_iterator>
|
||||||
vertices(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
vertices(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
std::pair<typename boost::graph_traits<TM>::vertex_iterator,
|
std::pair<typename boost::graph_traits<TM>::vertex_iterator,
|
||||||
typename boost::graph_traits<TM>::vertex_iterator> p = vertices(idt.triangle_mesh());
|
typename boost::graph_traits<TM>::vertex_iterator> p = vertices(idt.triangle_mesh());
|
||||||
|
|
||||||
typedef typename boost::graph_traits<TM>::vertex_iterator vertex_iterator;
|
typedef typename boost::graph_traits<TM>::vertex_iterator vertex_iterator;
|
||||||
typedef Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>::Vertex_iterator_functor Fct;
|
typedef typename Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>::Vertex_iterator_functor Fct;
|
||||||
Fct fct(idt.triangle_mesh());
|
Fct fct(idt.triangle_mesh());
|
||||||
return std::make_pair(boost::make_transform_iterator(p.first, fct),
|
return std::make_pair(boost::make_transform_iterator(p.first, fct),
|
||||||
boost::make_transform_iterator(p.second,fct));
|
boost::make_transform_iterator(p.second,fct));
|
||||||
|
|
@ -510,14 +534,14 @@ vertices(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename std::pair<typename boost::graph_traits<TM>::halfedge_iterator,
|
typename std::pair<typename boost::graph_traits<TM>::halfedge_iterator,
|
||||||
typename boost::graph_traits<TM>::halfedge_iterator>
|
typename boost::graph_traits<TM>::halfedge_iterator>
|
||||||
halfedges(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
halfedges(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return halfedges(idt.triangle_mesh());
|
return halfedges(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
@ -525,14 +549,14 @@ halfedges(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename std::pair<typename boost::graph_traits<TM>::edge_iterator,
|
typename std::pair<typename boost::graph_traits<TM>::edge_iterator,
|
||||||
typename boost::graph_traits<TM>::edge_iterator>
|
typename boost::graph_traits<TM>::edge_iterator>
|
||||||
edges(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
edges(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return edges(idt.triangle_mesh());
|
return edges(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
@ -540,57 +564,57 @@ edges(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename std::pair<typename boost::graph_traits<TM>::face_iterator,
|
typename std::pair<typename boost::graph_traits<TM>::face_iterator,
|
||||||
typename boost::graph_traits<TM>::face_iterator>
|
typename boost::graph_traits<TM>::face_iterator>
|
||||||
faces(const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
faces(const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return faces(idt.triangle_mesh());
|
return faces(idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
||||||
vertex(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
vertex(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& )
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& )
|
||||||
{
|
{
|
||||||
return boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor(hd);
|
return boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor(hd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
||||||
halfedge(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::face_descriptor fd,
|
halfedge(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::face_descriptor fd,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return halfedge(fd, idt.triangle_mesh());
|
return halfedge(fd, idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
||||||
halfedge(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::edge_descriptor ed,
|
halfedge(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::edge_descriptor ed,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return halfedge(ed, idt.triangle_mesh());
|
return halfedge(ed, idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
@ -598,14 +622,14 @@ halfedge(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HC
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor
|
||||||
next(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
next(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return next(hd, idt.triangle_mesh());
|
return next(hd, idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
@ -613,32 +637,32 @@ next(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VP
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
||||||
source(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
source(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
typedef typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor vertex_descriptor;
|
typedef typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor vertex_descriptor;
|
||||||
|
|
||||||
return vertex_descriptor(opposite(hd, idt.triangle_mesh()));
|
return vertex_descriptor(opposite(hd, idt.triangle_mesh()));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor
|
||||||
target(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
target(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::halfedge_descriptor hd,
|
||||||
const Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
typedef typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >::vertex_descriptor vertex_descriptor;
|
typedef typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >::vertex_descriptor vertex_descriptor;
|
||||||
|
|
||||||
return vertex_descriptor(hd);
|
return vertex_descriptor(hd);
|
||||||
}
|
}
|
||||||
|
|
@ -684,12 +708,48 @@ target(typename boost::graph_traits<Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,
|
||||||
friend value_type get(const IDT_vertex_index_property_map<IDT,PM>& pm,
|
friend value_type get(const IDT_vertex_index_property_map<IDT,PM>& pm,
|
||||||
key_type vd)
|
key_type vd)
|
||||||
{
|
{
|
||||||
typename TM::vertex_descriptor tm_vd = target(vd.hd,pm.idt.triangle_mesh());
|
typename boost::graph_traits<TM>::vertex_descriptor tm_vd = target(vd.hd,pm.idt.triangle_mesh());
|
||||||
|
|
||||||
return get(pm,tm_vd);
|
return get(pm,tm_vd);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <typename IDT, typename PM>
|
||||||
|
struct IDT_vertex_distance_property_map {
|
||||||
|
const IDT& idt;
|
||||||
|
PM pm;
|
||||||
|
|
||||||
|
typedef typename IDT::Triangle_mesh TM;
|
||||||
|
typedef typename IDT::Vertex_descriptor key_type;
|
||||||
|
typedef double value_type;
|
||||||
|
typedef value_type reference;
|
||||||
|
|
||||||
|
IDT_vertex_distance_property_map(const IDT& idt,
|
||||||
|
PM pm)
|
||||||
|
: idt(idt), pm(pm)
|
||||||
|
{}
|
||||||
|
|
||||||
|
friend value_type get(const IDT_vertex_distance_property_map<IDT,PM>& idtpm,
|
||||||
|
key_type vd)
|
||||||
|
{
|
||||||
|
typename boost::graph_traits<TM>::vertex_descriptor tm_vd = target(vd.hd, idtpm.idt.triangle_mesh());
|
||||||
|
|
||||||
|
return get(idtpm.pm,tm_vd);
|
||||||
|
}
|
||||||
|
|
||||||
|
friend void put(IDT_vertex_distance_property_map<IDT,PM> idtpm,
|
||||||
|
key_type vd,
|
||||||
|
value_type v)
|
||||||
|
{
|
||||||
|
typename boost::graph_traits<TM>::vertex_descriptor tm_vd = target(vd.hd, idtpm.idt.triangle_mesh());
|
||||||
|
|
||||||
|
// std::cout << "put " << typeid(pm).name() << std::endl;
|
||||||
|
|
||||||
|
put(idtpm.pm, tm_vd, v);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace Intrinsic_Delaunay_Triangulation_3
|
} // namespace Intrinsic_Delaunay_Triangulation_3
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
||||||
|
|
@ -697,58 +757,58 @@ namespace boost {
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>,
|
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>,
|
||||||
CGAL::vertex_point_t > {
|
CGAL::vertex_point_t > {
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> IDT;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> IDT;
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<IDT> type;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<IDT> type;
|
||||||
typedef type const_type;
|
typedef type const_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >
|
CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >
|
||||||
get(CGAL::vertex_point_t,
|
get(CGAL::vertex_point_t,
|
||||||
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> >(idt);
|
return CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_point_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> >(idt);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// change to face_index
|
////// change to face_index
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>,
|
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>,
|
||||||
CGAL::face_index_t > {
|
CGAL::face_index_t > {
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> IDT;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> IDT;
|
||||||
typedef typename property_map<TM, CGAL::face_index_t>::type type;
|
typedef typename property_map<TM, CGAL::face_index_t>::type type;
|
||||||
typedef typename property_map<TM, CGAL::face_index_t>::const_type const_type;
|
typedef typename property_map<TM, CGAL::face_index_t>::const_type const_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename property_map<TM,CGAL::face_index_t>::type
|
typename property_map<TM,CGAL::face_index_t>::type
|
||||||
get(CGAL::face_index_t fi,
|
get(CGAL::face_index_t fi,
|
||||||
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return get(fi, idt.triangle_mesh());
|
return get(fi, idt.triangle_mesh());
|
||||||
}
|
}
|
||||||
|
|
@ -758,16 +818,16 @@ get(CGAL::face_index_t fi,
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA>
|
typename LA>
|
||||||
typename property_map<TM,boost::vertex_index_t>::type
|
typename property_map<TM,boost::vertex_index_t>::type
|
||||||
get(boost::vertex_index_t vi,
|
get(boost::vertex_index_t vi,
|
||||||
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
return CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_index_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>, VPM >(idt, get(vi, idt.triangle_mesh()));
|
return CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_vertex_index_property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>, VPM >(idt, get(vi, idt.triangle_mesh()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // boost
|
} // boost
|
||||||
|
|
@ -820,15 +880,15 @@ namespace boost {
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA,
|
typename LA,
|
||||||
typename dT>
|
typename dT>
|
||||||
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>,
|
struct property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>,
|
||||||
CGAL::dynamic_vertex_property_t<dT> > {
|
CGAL::dynamic_vertex_property_t<dT> > {
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> IDT;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> IDT;
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_dynamic_vertex_property_map<IDT,
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::IDT_dynamic_vertex_property_map<IDT,
|
||||||
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::type,
|
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::type,
|
||||||
typename boost::graph_traits<IDT>::vertex_descriptor,
|
typename boost::graph_traits<IDT>::vertex_descriptor,
|
||||||
|
|
@ -846,17 +906,17 @@ namespace CGAL {
|
||||||
namespace Intrinsic_Delaunay_Triangulation_3 {
|
namespace Intrinsic_Delaunay_Triangulation_3 {
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA,
|
typename LA,
|
||||||
typename dT>
|
typename dT>
|
||||||
typename boost::property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>, CGAL::dynamic_vertex_property_t<dT> >::const_type
|
typename boost::property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>, CGAL::dynamic_vertex_property_t<dT> >::const_type
|
||||||
get(CGAL::dynamic_vertex_property_t<dT> dvp,
|
get(CGAL::dynamic_vertex_property_t<dT> dvp,
|
||||||
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
const CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> IDT;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> IDT;
|
||||||
typedef IDT_dynamic_vertex_property_map<IDT,
|
typedef IDT_dynamic_vertex_property_map<IDT,
|
||||||
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::const_type,
|
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::const_type,
|
||||||
typename boost::graph_traits<IDT>::vertex_descriptor,
|
typename boost::graph_traits<IDT>::vertex_descriptor,
|
||||||
|
|
@ -866,17 +926,17 @@ get(CGAL::dynamic_vertex_property_t<dT> dvp,
|
||||||
|
|
||||||
template <typename TM,
|
template <typename TM,
|
||||||
typename T,
|
typename T,
|
||||||
typename HCM,
|
typename VDM,
|
||||||
typename VPM,
|
typename VPM,
|
||||||
typename FIM,
|
typename FIM,
|
||||||
typename EIM,
|
typename EIM,
|
||||||
typename LA,
|
typename LA,
|
||||||
typename dT>
|
typename dT>
|
||||||
typename boost::property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>, CGAL::dynamic_vertex_property_t<dT> >::type
|
typename boost::property_map<CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>, CGAL::dynamic_vertex_property_t<dT> >::type
|
||||||
get(CGAL::dynamic_vertex_property_t<dT> dvp,
|
get(CGAL::dynamic_vertex_property_t<dT> dvp,
|
||||||
CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA>& idt)
|
CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA>& idt)
|
||||||
{
|
{
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,HCM,VPM,FIM,EIM,LA> IDT;
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<TM,T,VDM,VPM,FIM,EIM,LA> IDT;
|
||||||
typedef IDT_dynamic_vertex_property_map<IDT,
|
typedef IDT_dynamic_vertex_property_map<IDT,
|
||||||
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::type,
|
typename boost::property_map<TM, CGAL::dynamic_vertex_property_t<dT> >::type,
|
||||||
typename boost::graph_traits<IDT>::vertex_descriptor,
|
typename boost::graph_traits<IDT>::vertex_descriptor,
|
||||||
|
|
|
||||||
|
|
@ -14,25 +14,22 @@
|
||||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||||
typedef Kernel::Point_3 Point;
|
typedef Kernel::Point_3 Point;
|
||||||
typedef Kernel::Point_2 Point_2;
|
typedef Kernel::Point_2 Point_2;
|
||||||
typedef CGAL::Surface_mesh<Point> BaseMesh;
|
typedef CGAL::Surface_mesh<Point> Surface_mesh;
|
||||||
typedef CGAL::dynamic_halfedge_property_t<Point_2> Halfedge_coordinate_tag;
|
|
||||||
typedef boost::property_map<BaseMesh, Halfedge_coordinate_tag >::type Halfedge_coordinate_map;
|
|
||||||
|
|
||||||
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<BaseMesh,Kernel, Halfedge_coordinate_map> Mesh;
|
|
||||||
|
|
||||||
|
|
||||||
typedef CGAL::dynamic_vertex_property_t<double> Vertex_distance_tag;
|
typedef CGAL::dynamic_vertex_property_t<double> Vertex_distance_tag;
|
||||||
typedef boost::property_map<Mesh, Vertex_distance_tag >::type Vertex_distance_map;
|
typedef boost::property_map<Surface_mesh, Vertex_distance_tag >::type Vertex_distance_map;
|
||||||
|
|
||||||
|
typedef CGAL::Intrinsic_Delaunay_Triangulation_3::Intrinsic_Delaunay_Triangulation_3<Surface_mesh,Kernel, Vertex_distance_map> Idt;
|
||||||
|
|
||||||
|
|
||||||
typedef boost::graph_traits<Mesh>::vertex_descriptor vertex_descriptor;
|
typedef boost::graph_traits<Idt>::vertex_descriptor vertex_descriptor;
|
||||||
|
|
||||||
typedef CGAL::Heat_method_3::Heat_method_3<Mesh,Kernel,Vertex_distance_map> Heat_method;
|
typedef CGAL::Heat_method_3::Heat_method_3<Idt,Kernel, Idt::Vertex_distance_map> Heat_method;
|
||||||
typedef CGAL::Heat_method_3::Heat_method_Eigen_traits_3::SparseMatrix SparseMatrix;
|
typedef CGAL::Heat_method_3::Heat_method_Eigen_traits_3::SparseMatrix SparseMatrix;
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
void source_set_tests(Heat_method hm, const Mesh& sm)
|
void source_set_tests(Heat_method hm, const Idt& sm)
|
||||||
{
|
{
|
||||||
vertex_descriptor source = *(vertices(sm).first);
|
vertex_descriptor source = *(vertices(sm).first);
|
||||||
hm.add_source(source);
|
hm.add_source(source);
|
||||||
|
|
@ -98,7 +95,7 @@ void check_for_unit(const Eigen::MatrixXd& X, int dimension)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_no_update(const Mesh& sm, const Vertex_distance_map& original, const Vertex_distance_map& updated)
|
void check_no_update(const Idt& sm, const Vertex_distance_map& original, const Vertex_distance_map& updated)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(vertex_descriptor vd, vertices(sm))
|
BOOST_FOREACH(vertex_descriptor vd, vertices(sm))
|
||||||
{
|
{
|
||||||
|
|
@ -111,30 +108,36 @@ void check_no_update(const Mesh& sm, const Vertex_distance_map& original, const
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
BaseMesh bm;
|
Surface_mesh sm;
|
||||||
Halfedge_coordinate_map hcm;
|
Vertex_distance_map vdm = get(Vertex_distance_tag(),sm);
|
||||||
Mesh sm(bm,hcm);
|
|
||||||
|
Idt idt(sm, vdm);
|
||||||
|
|
||||||
|
|
||||||
Vertex_distance_map vertex_distance_map = get(Vertex_distance_tag(),sm);
|
|
||||||
bool idf = false;
|
bool idf = false;
|
||||||
|
|
||||||
std::ifstream in("data/pyramid0.off");
|
std::ifstream in("data/pyramid0.off");
|
||||||
in >> bm;
|
in >> sm;
|
||||||
if(!in || num_vertices(bm) == 0) {
|
if(!in || num_vertices(sm) == 0) {
|
||||||
std::cerr << "Problem loading the input data" << std::endl;
|
std::cerr << "Problem loading the input data" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
put(vertex_distance_map, * vertices(sm).first, 1.0);
|
//put(vdm, * vertices(sm).first, 1.0);
|
||||||
put(vertex_distance_map, * halfedges(sm).first, 1.0);
|
//put(vdm, * halfedges(sm).first, 1.0);
|
||||||
|
|
||||||
|
|
||||||
//source set tests
|
//source set tests
|
||||||
Heat_method hm(sm, vertex_distance_map);
|
Heat_method hm(idt, idt.vertex_distance_map());
|
||||||
hm.add_source(* vertices(sm).first);
|
// hm.add_source(* vertices(idt).first);
|
||||||
|
|
||||||
|
hm.add_source(boost::graph_traits<Idt>::vertex_descriptor(boost::graph_traits<Surface_mesh>::vertex_descriptor(0),sm));
|
||||||
hm.update();
|
hm.update();
|
||||||
#if 0
|
#if 0
|
||||||
source_set_tests(hm,sm);
|
|
||||||
|
|
||||||
|
|
||||||
|
source_set_tests(hm,idt);
|
||||||
//cotan matrix tests
|
//cotan matrix tests
|
||||||
const SparseMatrix& M = hm.mass_matrix();
|
const SparseMatrix& M = hm.mass_matrix();
|
||||||
//std::cout<<"and M is: "<< Eigen::MatrixXd(M) << "\n";
|
//std::cout<<"and M is: "<< Eigen::MatrixXd(M) << "\n";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue