mirror of https://github.com/CGAL/cgal
- Make the examples working
- Comment old code - Try caching
This commit is contained in:
parent
d1aedbf6bb
commit
9832ce9d9b
|
|
@ -11,7 +11,7 @@
|
||||||
#include "skin_surface_writer.h"
|
#include "skin_surface_writer.h"
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Regular_triangulation_euclidean_traits_3<K> Traits;
|
typedef CGAL::Mixed_complex_traits_3<K> Traits;
|
||||||
typedef CGAL::Skin_surface_3<Traits> Skin_surface_3;
|
typedef CGAL::Skin_surface_3<Traits> Skin_surface_3;
|
||||||
typedef Skin_surface_3::RT RT;
|
typedef Skin_surface_3::RT RT;
|
||||||
typedef Skin_surface_3::Weighted_point Weighted_point;
|
typedef Skin_surface_3::Weighted_point Weighted_point;
|
||||||
|
|
@ -29,20 +29,17 @@ int main(int argc, char *argv[]) {
|
||||||
extract_balls_from_pdb(argv[1], K(), std::back_inserter(l));
|
extract_balls_from_pdb(argv[1], K(), std::back_inserter(l));
|
||||||
|
|
||||||
// Construct skin surface:
|
// Construct skin surface:
|
||||||
Skin_surface_3 skin_surface(l.begin(), l.end(), shrinkfactor, true,
|
Skin_surface_3 skin_surface(l.begin(), l.end(), shrinkfactor);
|
||||||
Traits(), true);
|
|
||||||
|
|
||||||
// Extract mesh from the skin surface:
|
// Extract mesh from the skin surface:
|
||||||
Polyhedron p;
|
Polyhedron p;
|
||||||
CGAL::mesh_skin_surface_3(skin_surface, p);
|
CGAL::mesh_skin_surface_3(skin_surface, p);
|
||||||
|
|
||||||
// CGAL::subdivide_skin_surface_mesh_3(p, skin_surface, 1);
|
// Subdivide skin surface
|
||||||
// std::cout << "Subdivided Skin_surface_3" << std::endl;
|
// CGAL::subdivide_skin_surface_mesh_3(p, skin_surface, 1);
|
||||||
|
|
||||||
std::ofstream out("mesh.off");
|
std::ofstream out("mesh.off");
|
||||||
write_polyhedron_with_normals(p, skin_surface, out);
|
write_polyhedron_with_normals(p, skin_surface, out);
|
||||||
// write without normals:
|
|
||||||
//out << p;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,6 @@
|
||||||
#include <CGAL/mesh_skin_surface_3.h>
|
#include <CGAL/mesh_skin_surface_3.h>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
// NGHK: remove later
|
|
||||||
#include <fstream>
|
|
||||||
#include "skin_surface_writer.h"
|
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Mixed_complex_traits_3<K> Traits;
|
typedef CGAL::Mixed_complex_traits_3<K> Traits;
|
||||||
typedef CGAL::Skin_surface_3<Traits> Skin_surface_3;
|
typedef CGAL::Skin_surface_3<Traits> Skin_surface_3;
|
||||||
|
|
@ -32,9 +28,5 @@ int main(int argc, char *argv[]) {
|
||||||
Polyhedron p;
|
Polyhedron p;
|
||||||
CGAL::mesh_skin_surface_3(skin_surface, p);
|
CGAL::mesh_skin_surface_3(skin_surface, p);
|
||||||
|
|
||||||
// NGHK: remove later
|
|
||||||
std::ofstream out("mesh.off");
|
|
||||||
write_polyhedron_with_normals(p, skin_surface, out);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Regular_triangulation_euclidean_traits_3<K> Traits;
|
typedef CGAL::Mixed_complex_traits_3<K> Traits;
|
||||||
typedef CGAL::Union_of_balls_3<Traits> Union_of_balls_3;
|
typedef CGAL::Union_of_balls_3<Traits> Union_of_balls_3;
|
||||||
typedef Union_of_balls_3::RT RT;
|
typedef Union_of_balls_3::RT RT;
|
||||||
typedef Union_of_balls_3::Weighted_point Weighted_point;
|
typedef Union_of_balls_3::Weighted_point Weighted_point;
|
||||||
|
|
|
||||||
|
|
@ -41,59 +41,59 @@
|
||||||
|
|
||||||
CGAL_BEGIN_NAMESPACE
|
CGAL_BEGIN_NAMESPACE
|
||||||
|
|
||||||
template < class GT,
|
// template < class GT,
|
||||||
class SkinSurface_3,
|
// class SkinSurface_3,
|
||||||
class Cb = Triangulation_cell_base_3<GT> >
|
// class Cb = Triangulation_cell_base_3<GT> >
|
||||||
class Triangulated_mixed_complex_cell_3 : public Cb
|
// class Triangulated_mixed_complex_cell_3 : public Cb
|
||||||
{
|
// {
|
||||||
public:
|
// public:
|
||||||
typedef typename Cb::Triangulation_data_structure Triangulation_data_structure;
|
// typedef typename Cb::Triangulation_data_structure Triangulation_data_structure;
|
||||||
typedef typename Triangulation_data_structure::Vertex_handle Vertex_handle;
|
// typedef typename Triangulation_data_structure::Vertex_handle Vertex_handle;
|
||||||
typedef typename Triangulation_data_structure::Cell_handle Cell_handle;
|
// typedef typename Triangulation_data_structure::Cell_handle Cell_handle;
|
||||||
|
|
||||||
typedef typename SkinSurface_3::Quadratic_surface Quadratic_surface;
|
// typedef typename SkinSurface_3::Quadratic_surface Quadratic_surface;
|
||||||
typedef typename SkinSurface_3::Simplex Simplex;
|
// typedef typename SkinSurface_3::Simplex Simplex;
|
||||||
|
|
||||||
template < class TDS2 >
|
// template < class TDS2 >
|
||||||
struct Rebind_TDS {
|
// struct Rebind_TDS {
|
||||||
typedef typename Cb::template Rebind_TDS<TDS2>::Other Cb2;
|
// typedef typename Cb::template Rebind_TDS<TDS2>::Other Cb2;
|
||||||
typedef Triangulated_mixed_complex_cell_3<GT, SkinSurface_3, Cb2>
|
// typedef Triangulated_mixed_complex_cell_3<GT, SkinSurface_3, Cb2>
|
||||||
Other;
|
// Other;
|
||||||
};
|
// };
|
||||||
|
|
||||||
Triangulated_mixed_complex_cell_3() : Cb() {
|
// Triangulated_mixed_complex_cell_3() : Cb() {
|
||||||
}
|
// }
|
||||||
Triangulated_mixed_complex_cell_3(Vertex_handle v0, Vertex_handle v1,
|
// Triangulated_mixed_complex_cell_3(Vertex_handle v0, Vertex_handle v1,
|
||||||
Vertex_handle v2, Vertex_handle v3)
|
// Vertex_handle v2, Vertex_handle v3)
|
||||||
: Cb(v0, v1, v2, v3) {
|
// : Cb(v0, v1, v2, v3) {
|
||||||
}
|
// }
|
||||||
|
|
||||||
Quadratic_surface *surf;
|
// Quadratic_surface *surf;
|
||||||
Simplex simp;
|
// Simplex simp;
|
||||||
};
|
// };
|
||||||
|
|
||||||
template < class GT,
|
// template < class GT,
|
||||||
class Vb = Triangulation_vertex_base_3<GT> >
|
// class Vb = Triangulation_vertex_base_3<GT> >
|
||||||
class Triangulated_mixed_complex_vertex_3 : public Vb
|
// class Triangulated_mixed_complex_vertex_3 : public Vb
|
||||||
{
|
// {
|
||||||
public:
|
// public:
|
||||||
typedef typename Vb::Point Point;
|
// typedef typename Vb::Point Point;
|
||||||
typedef typename Vb::Cell_handle Cell_handle;
|
// typedef typename Vb::Cell_handle Cell_handle;
|
||||||
|
|
||||||
template < class TDS2 >
|
// template < class TDS2 >
|
||||||
struct Rebind_TDS {
|
// struct Rebind_TDS {
|
||||||
typedef typename Vb::template Rebind_TDS<TDS2>::Other Vb2;
|
// typedef typename Vb::template Rebind_TDS<TDS2>::Other Vb2;
|
||||||
typedef Triangulated_mixed_complex_vertex_3<GT, Vb2> Other;
|
// typedef Triangulated_mixed_complex_vertex_3<GT, Vb2> Other;
|
||||||
};
|
// };
|
||||||
|
|
||||||
Triangulated_mixed_complex_vertex_3() {}
|
// Triangulated_mixed_complex_vertex_3() {}
|
||||||
Triangulated_mixed_complex_vertex_3(const Point&p) : Vb(p) {}
|
// Triangulated_mixed_complex_vertex_3(const Point&p) : Vb(p) {}
|
||||||
Triangulated_mixed_complex_vertex_3(const Point&p, Cell_handle c) : Vb(p, c) {}
|
// Triangulated_mixed_complex_vertex_3(const Point&p, Cell_handle c) : Vb(p, c) {}
|
||||||
|
|
||||||
Sign sign() const {
|
// Sign sign() const {
|
||||||
return Vb::cell()->surf->sign(Vb::point());
|
// return Vb::cell()->surf->sign(Vb::point());
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
template <class SkinSurfaceTraits_3>
|
template <class SkinSurfaceTraits_3>
|
||||||
class Skin_surface_3 {
|
class Skin_surface_3 {
|
||||||
|
|
@ -110,6 +110,9 @@ private:
|
||||||
|
|
||||||
typedef Regular_triangulation_3<Gt> Regular;
|
typedef Regular_triangulation_3<Gt> Regular;
|
||||||
|
|
||||||
|
typedef Exact_predicates_inexact_constructions_kernel Filtered_kernel;
|
||||||
|
typedef Skin_surface_quadratic_surface_3<Filtered_kernel>
|
||||||
|
Filtered_quadratic_surface;
|
||||||
public:
|
public:
|
||||||
typedef typename Regular::Vertex_handle Vertex_handle;
|
typedef typename Regular::Vertex_handle Vertex_handle;
|
||||||
typedef typename Regular::Edge Edge;
|
typedef typename Regular::Edge Edge;
|
||||||
|
|
@ -118,16 +121,21 @@ public:
|
||||||
typedef typename Regular::Cell_handle Cell_handle;
|
typedef typename Regular::Cell_handle Cell_handle;
|
||||||
typedef Triangulation_simplex_3<Regular> Simplex;
|
typedef Triangulation_simplex_3<Regular> Simplex;
|
||||||
|
|
||||||
// defining the triangulated mixed complex:
|
typedef typename Regular::Finite_vertices_iterator Finite_vertices_iterator;
|
||||||
typedef Exact_predicates_exact_constructions_kernel TMC_traits;
|
typedef typename Regular::Finite_edges_iterator Finite_edges_iterator;
|
||||||
typedef Skin_surface_quadratic_surface_3<TMC_traits> Quadratic_surface;
|
typedef typename Regular::Finite_facets_iterator Finite_facets_iterator;
|
||||||
|
typedef typename Regular::Finite_cells_iterator Finite_cells_iterator;
|
||||||
|
|
||||||
typedef Triangulation_3<
|
// // defining the triangulated mixed complex:
|
||||||
TMC_traits,
|
// typedef Exact_predicates_exact_constructions_kernel TMC_traits;
|
||||||
Triangulation_data_structure_3
|
// typedef Skin_surface_quadratic_surface_3<TMC_traits> Quadratic_surface;
|
||||||
< Triangulated_mixed_complex_vertex_3<TMC_traits>,
|
|
||||||
Triangulated_mixed_complex_cell_3<TMC_traits,Self> >
|
// typedef Triangulation_3<
|
||||||
> Triangulated_mixed_complex;
|
// TMC_traits,
|
||||||
|
// Triangulation_data_structure_3
|
||||||
|
// < Triangulated_mixed_complex_vertex_3<TMC_traits>,
|
||||||
|
// Triangulated_mixed_complex_cell_3<TMC_traits,Self> >
|
||||||
|
// > Triangulated_mixed_complex;
|
||||||
typedef Combinatorial_mixed_complex_triangulator_3<Regular> CMCT;
|
typedef Combinatorial_mixed_complex_triangulator_3<Regular> CMCT;
|
||||||
typedef typename CMCT::Vertex_handle CMCT_Vertex_handle;
|
typedef typename CMCT::Vertex_handle CMCT_Vertex_handle;
|
||||||
typedef typename CMCT::Vertex_iterator CMCT_Vertex_iterator;
|
typedef typename CMCT::Vertex_iterator CMCT_Vertex_iterator;
|
||||||
|
|
@ -135,17 +143,17 @@ public:
|
||||||
typedef typename CMCT::Cell_iterator CMCT_Cell_iterator;
|
typedef typename CMCT::Cell_iterator CMCT_Cell_iterator;
|
||||||
|
|
||||||
|
|
||||||
typedef typename Triangulated_mixed_complex::Vertex_handle TMC_Vertex_handle;
|
// typedef typename Triangulated_mixed_complex::Vertex_handle TMC_Vertex_handle;
|
||||||
typedef typename Triangulated_mixed_complex::Cell_handle TMC_Cell_handle;
|
// typedef typename Triangulated_mixed_complex::Cell_handle TMC_Cell_handle;
|
||||||
typedef typename Triangulated_mixed_complex::Vertex_iterator TMC_Vertex_iterator;
|
// typedef typename Triangulated_mixed_complex::Vertex_iterator TMC_Vertex_iterator;
|
||||||
typedef typename Triangulated_mixed_complex::Cell_iterator TMC_Cell_iterator;
|
// typedef typename Triangulated_mixed_complex::Cell_iterator TMC_Cell_iterator;
|
||||||
|
|
||||||
// NGHK: added for the (Delaunay) surface mesher, document
|
// NGHK: added for the (Delaunay) surface mesher, document
|
||||||
typedef Exact_predicates_inexact_constructions_kernel Mesher_Gt;
|
typedef Exact_predicates_inexact_constructions_kernel Mesher_Gt;
|
||||||
typedef Skin_surface_mesher_oracle_3<Mesher_Gt,Self> Surface_mesher_traits_3;
|
typedef Skin_surface_mesher_oracle_3<Mesher_Gt,Self> Surface_mesher_traits_3;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef typename TMC_traits::Point_3 TMC_Point;
|
//typedef typename TMC_traits::Point_3 TMC_Point;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template < class WP_iterator >
|
template < class WP_iterator >
|
||||||
|
|
@ -186,6 +194,38 @@ public:
|
||||||
// }
|
// }
|
||||||
|
|
||||||
mc_triangulator = new CMCT(regular, verbose);
|
mc_triangulator = new CMCT(regular, verbose);
|
||||||
|
|
||||||
|
// {
|
||||||
|
// Simplex s;
|
||||||
|
// for (Finite_vertices_iterator vit = regular.finite_vertices_begin();
|
||||||
|
// vit == regular.finite_vertices_end(); vit++) {
|
||||||
|
// s= vit;
|
||||||
|
// filtered_quadr_surfaces[s] =
|
||||||
|
// construct_surface(s,
|
||||||
|
// Exact_predicates_inexact_constructions_kernel());
|
||||||
|
// }
|
||||||
|
// for (Finite_edges_iterator eit = regular.finite_edges_begin();
|
||||||
|
// eit == regular.finite_edges_end(); eit++) {
|
||||||
|
// s= eit;
|
||||||
|
// filtered_quadr_surfaces[s] =
|
||||||
|
// construct_surface(s,
|
||||||
|
// Exact_predicates_inexact_constructions_kernel());
|
||||||
|
// }
|
||||||
|
// for (Finite_facets_iterator fit = regular.finite_facets_begin();
|
||||||
|
// fit == regular.finite_facets_end(); fit++) {
|
||||||
|
// s= fit;
|
||||||
|
// filtered_quadr_surfaces[s] =
|
||||||
|
// construct_surface(s,
|
||||||
|
// Exact_predicates_inexact_constructions_kernel());
|
||||||
|
// }
|
||||||
|
// for (Finite_cells_iterator cit = regular.finite_cells_begin();
|
||||||
|
// cit == regular.finite_cells_end(); cit++) {
|
||||||
|
// s= cit;
|
||||||
|
// filtered_quadr_surfaces[s] =
|
||||||
|
// construct_surface(s,
|
||||||
|
// Exact_predicates_inexact_constructions_kernel());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
// const Triangulated_mixed_complex &triangulated_mixed_complex() const {
|
// const Triangulated_mixed_complex &triangulated_mixed_complex() const {
|
||||||
// return _tmc;
|
// return _tmc;
|
||||||
|
|
@ -313,7 +353,22 @@ public:
|
||||||
}
|
}
|
||||||
template< class Point >
|
template< class Point >
|
||||||
Sign sign(const Simplex &sim, const Point &p) const {
|
Sign sign(const Simplex &sim, const Point &p) const {
|
||||||
return construct_surface(sim, typename Point::R()).sign(p);
|
try
|
||||||
|
{
|
||||||
|
CGAL_PROFILER(std::string("NGHK: calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
||||||
|
Protect_FPU_rounding<true> P;
|
||||||
|
Sign result = construct_surface
|
||||||
|
(sim,
|
||||||
|
Exact_predicates_inexact_constructions_kernel()).sign(p);
|
||||||
|
if (! is_indeterminate(result))
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Interval_nt_advanced::unsafe_comparison) {}
|
||||||
|
CGAL_PROFILER(std::string("NGHK: failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
||||||
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
return construct_surface
|
||||||
|
(sim,
|
||||||
|
Exact_predicates_exact_constructions_kernel()).sign(p);
|
||||||
}
|
}
|
||||||
template< class Point >
|
template< class Point >
|
||||||
typename Point::R::RT
|
typename Point::R::RT
|
||||||
|
|
@ -371,28 +426,22 @@ public:
|
||||||
// Use value to make the computation robust (endpoints near the surface)
|
// Use value to make the computation robust (endpoints near the surface)
|
||||||
if (value(s1, p1) > value(s2, p2)) std::swap(p1, p2);
|
if (value(s1, p1) > value(s2, p2)) std::swap(p1, p2);
|
||||||
Simplex sp = s1;
|
Simplex sp = s1;
|
||||||
while (sq_dist > 1e-18) {
|
|
||||||
|
while ((s1 != s2) && (sq_dist > 1e-18)) {
|
||||||
p = midpoint(p1, p2);
|
p = midpoint(p1, p2);
|
||||||
sp = locate_mixed(converter(p), sp);
|
sp = locate_mixed(converter(p), sp);
|
||||||
if (sign(sp, p) == NEGATIVE) { p1 = p; }
|
|
||||||
|
if (sign(sp, p) == NEGATIVE) { p1 = p; s1 = sp; }
|
||||||
|
else { p2 = p; s2 = sp; }
|
||||||
|
|
||||||
|
sq_dist *= .25;
|
||||||
|
}
|
||||||
|
while (sq_dist > 1e-18) {
|
||||||
|
p = midpoint(p1, p2);
|
||||||
|
if (sign(s1, p) == NEGATIVE) { p1 = p; }
|
||||||
else { p2 = p; }
|
else { p2 = p; }
|
||||||
sq_dist *= .25;
|
sq_dist *= .25;
|
||||||
}
|
}
|
||||||
// while ((s1 != s2) && (sq_dist > 1e-18)) {
|
|
||||||
// p = midpoint(p1, p2);
|
|
||||||
// sp = locate_mixed(converter(p), sp);
|
|
||||||
|
|
||||||
// if (sign(sp, p) == NEGATIVE) { p1 = p; s1 = sp; }
|
|
||||||
// else { p2 = p; s2 = sp; }
|
|
||||||
|
|
||||||
// sq_dist *= .25;
|
|
||||||
// }
|
|
||||||
// while (sq_dist > 1e-18) {
|
|
||||||
// p = midpoint(p1, p2);
|
|
||||||
// if (sign(s1, p) == NEGATIVE) { p1 = p; }
|
|
||||||
// else { p2 = p; }
|
|
||||||
// sq_dist *= .25;
|
|
||||||
// }
|
|
||||||
p = midpoint(p1, p2);
|
p = midpoint(p1, p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -472,10 +521,6 @@ public:
|
||||||
CGAL_assertion(false);
|
CGAL_assertion(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cerr << "SKEL 2 1" << std::endl
|
|
||||||
<< " " << p1 << std::endl
|
|
||||||
<< " " << p2 << std::endl
|
|
||||||
<< " 2 0 1" << std::endl;
|
|
||||||
// Find the intersection:
|
// Find the intersection:
|
||||||
intersect(p1, p2, sim, sim, p);
|
intersect(p1, p2, sim, sim, p);
|
||||||
}
|
}
|
||||||
|
|
@ -573,7 +618,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Used to optimize the point location in TMC:
|
// Used to optimize the point location in TMC:
|
||||||
mutable TMC_Cell_handle last_ch;
|
// mutable TMC_Cell_handle last_ch;
|
||||||
|
|
||||||
void construct_bounding_box(Regular ®ular);
|
void construct_bounding_box(Regular ®ular);
|
||||||
|
|
||||||
|
|
@ -586,6 +631,7 @@ private:
|
||||||
|
|
||||||
// We want to construct this object later (the pointer):
|
// We want to construct this object later (the pointer):
|
||||||
CMCT *mc_triangulator;
|
CMCT *mc_triangulator;
|
||||||
|
// std::map<Simplex, Filtered_quadratic_surface> filtered_quadr_surfaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class SkinSurfaceTraits_3>
|
template <class SkinSurfaceTraits_3>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,9 @@ CGAL_BEGIN_NAMESPACE
|
||||||
|
|
||||||
template < class Triangulation_3 >
|
template < class Triangulation_3 >
|
||||||
class Triangulation_simplex_3 {
|
class Triangulation_simplex_3 {
|
||||||
|
public:
|
||||||
typedef Triangulation_3 T;
|
typedef Triangulation_3 T;
|
||||||
|
typedef Triangulation_simplex_3<T> Self;
|
||||||
typedef typename T::Vertex_handle Vertex_handle;
|
typedef typename T::Vertex_handle Vertex_handle;
|
||||||
typedef typename T::Edge Edge;
|
typedef typename T::Edge Edge;
|
||||||
typedef typename T::Facet Facet;
|
typedef typename T::Facet Facet;
|
||||||
|
|
@ -36,7 +38,11 @@ class Triangulation_simplex_3 {
|
||||||
typedef typename T::Edge_iterator Edge_iterator;
|
typedef typename T::Edge_iterator Edge_iterator;
|
||||||
typedef typename T::Facet_iterator Facet_iterator;
|
typedef typename T::Facet_iterator Facet_iterator;
|
||||||
|
|
||||||
public:
|
typedef typename T::Finite_vertices_iterator Finite_vertices_iterator;
|
||||||
|
typedef typename T::Finite_edges_iterator Finite_edges_iterator;
|
||||||
|
typedef typename T::Finite_facets_iterator Finite_facets_iterator;
|
||||||
|
typedef typename T::Finite_cells_iterator Finite_cells_iterator;
|
||||||
|
|
||||||
Triangulation_simplex_3() : ref(-1), ch() { }
|
Triangulation_simplex_3() : ref(-1), ch() { }
|
||||||
|
|
||||||
Triangulation_simplex_3(Vertex_handle v) {
|
Triangulation_simplex_3(Vertex_handle v) {
|
||||||
|
|
@ -79,6 +85,36 @@ public:
|
||||||
CGAL_assertion (ch != Cell_handle());
|
CGAL_assertion (ch != Cell_handle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Self &operator=(const Vertex_handle &vh) {
|
||||||
|
ch = vh->cell();
|
||||||
|
ref = (ch->index(vh) << 2); /* dim == 0 */
|
||||||
|
CGAL_assertion (ch != Cell_handle());
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
Self &operator=(const Finite_vertices_iterator &vh) {
|
||||||
|
ch = vh->cell();
|
||||||
|
ref = (ch->index(vh) << 2); /* dim == 0 */
|
||||||
|
CGAL_assertion (ch != Cell_handle());
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
Self &operator=(const Finite_edges_iterator &eit) {
|
||||||
|
ch = (*eit).first;
|
||||||
|
ref = ((((*eit).third<< 2) + (*eit).second) << 2) + 1; /* dim */
|
||||||
|
CGAL_assertion (ch != Cell_handle());
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
Self &operator=(const Finite_facets_iterator &fit) {
|
||||||
|
ch = (*fit).first;
|
||||||
|
ref = ((*fit).second << 2) + 2; /* dim */
|
||||||
|
CGAL_assertion (ch != Cell_handle());
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
Self &operator=(const Finite_cells_iterator &cit) {
|
||||||
|
ch = cit;
|
||||||
|
ref = 3; /* dim */
|
||||||
|
CGAL_assertion (ch != Cell_handle());
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
|
||||||
operator Vertex_handle () const
|
operator Vertex_handle () const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,8 @@ template <class SkinSurface_3, class Polyhedron>
|
||||||
void mesh_skin_surface_3(SkinSurface_3 const &skin_surface,
|
void mesh_skin_surface_3(SkinSurface_3 const &skin_surface,
|
||||||
Polyhedron &p)
|
Polyhedron &p)
|
||||||
{
|
{
|
||||||
typedef typename SkinSurface_3::Triangulated_mixed_complex
|
// typedef typename SkinSurface_3::Triangulated_mixed_complex
|
||||||
Triangulated_mixed_complex;
|
// Triangulated_mixed_complex;
|
||||||
typedef Marching_tetrahedra_traits_skin_surface_3<
|
typedef Marching_tetrahedra_traits_skin_surface_3<
|
||||||
SkinSurface_3,
|
SkinSurface_3,
|
||||||
typename SkinSurface_3::CMCT_Vertex_iterator,
|
typename SkinSurface_3::CMCT_Vertex_iterator,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue