mirror of https://github.com/CGAL/cgal
minor changes
This commit is contained in:
parent
25ed1d9a52
commit
e760336cd2
|
|
@ -11,3 +11,4 @@ it displays an OpenGL view of both the mesh and the ridge lines
|
||||||
./introspect-qt.exe ../../examples/Ridges_3/data/ellipe0.003.off ../../examples/Ridges_3/data_ellipe0.003.off.4ogl.txt
|
./introspect-qt.exe ../../examples/Ridges_3/data/ellipe0.003.off ../../examples/Ridges_3/data_ellipe0.003.off.4ogl.txt
|
||||||
|
|
||||||
|
|
||||||
|
./introspect-qt.exe ../../examples/Ridges_3/data/poly2x^2+y^2-0.062500.off ../../examples/Ridges_3/data_poly2x^2+y^2-0.062500.off.4ogl.txt
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,17 @@ SketchSample::~SketchSample() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SketchSample::buildDisplayList(GLuint surf) {
|
void SketchSample::buildDisplayList(GLuint surf) {
|
||||||
|
|
||||||
glNewList(surf, GL_COMPILE);
|
glNewList(surf, GL_COMPILE);
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
glEnable(GL_LIGHTING);
|
||||||
//mesh
|
// glShadeModel(GL_SMOOTH);
|
||||||
//glMaterialfv is def in the mesh
|
glShadeModel(GL_FLAT);
|
||||||
|
//mesh glMaterialfv is def in the mesh with offset to see the lines z_buffered
|
||||||
p_mesh->gl_draw_facets(true);
|
p_mesh->gl_draw_facets(true);
|
||||||
|
|
||||||
|
|
||||||
//ridges, drawn without light
|
//ridges, drawn without light
|
||||||
glDisable(GL_LIGHTING);
|
glDisable(GL_LIGHTING);
|
||||||
|
glColor3d(1., 1., 0.);
|
||||||
|
|
||||||
for (DS_iterator it=p_ridge_data->begin();it!=p_ridge_data->end();it++)
|
for (DS_iterator it=p_ridge_data->begin();it!=p_ridge_data->end();it++)
|
||||||
draw_one_ridge(*it);
|
draw_one_ridge(*it);
|
||||||
|
|
@ -108,11 +108,11 @@ void SketchSample::draw_one_ridge(data_line* line)
|
||||||
if (line->ridge_type == RH) glColor3f(1.,1.,0.);
|
if (line->ridge_type == RH) glColor3f(1.,1.,0.);
|
||||||
if (line->ridge_type == RC) glColor3f(1.,0.,0.);
|
if (line->ridge_type == RC) glColor3f(1.,0.,0.);
|
||||||
|
|
||||||
std::list<Point>::iterator iter = line->ridge_points.begin(),
|
std::vector<Point>::iterator iter = line->ridge_points.begin(),
|
||||||
ite = line->ridge_points.end();
|
ite = line->ridge_points.end();
|
||||||
|
|
||||||
glLineWidth(3 );
|
glLineWidth(3 );
|
||||||
glBegin(GL_LINES);
|
glBegin(GL_LINE_STRIP);
|
||||||
for (;iter!=ite;iter++) glVertex3d(iter->x(), iter->y(), iter->z());
|
for (;iter!=ite;iter++) glVertex3d(iter->x(), iter->y(), iter->z());
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ enum Ridge_type {NONE=0, BLUE_RIDGE, RED_RIDGE, CREST, BE, BH, BC, RE, RH, RC};
|
||||||
struct data_line{
|
struct data_line{
|
||||||
int ridge_type;
|
int ridge_type;
|
||||||
double strength, sharpness;
|
double strength, sharpness;
|
||||||
std::list<Point> ridge_points;
|
std::vector<Point> ridge_points;
|
||||||
data_line(int ridge_type, double strength, double sharpness,
|
data_line(int ridge_type, double strength, double sharpness,
|
||||||
std::list<Point> ridge_points):
|
std::vector<Point> ridge_points):
|
||||||
ridge_type(ridge_type), strength(strength), sharpness(sharpness),
|
ridge_type(ridge_type), strength(strength), sharpness(sharpness),
|
||||||
ridge_points(ridge_points)
|
ridge_points(ridge_points)
|
||||||
{};
|
{};
|
||||||
|
|
|
||||||
|
|
@ -254,9 +254,12 @@ public :
|
||||||
// draw edges
|
// draw edges
|
||||||
void gl_draw_edges()
|
void gl_draw_edges()
|
||||||
{
|
{
|
||||||
|
::glColor3f(1,0,0);
|
||||||
|
::glBegin(GL_LINES);
|
||||||
|
|
||||||
Halfedge_iterator it;
|
Halfedge_iterator it;
|
||||||
for(it = edges_begin();
|
for(it = this->edges_begin();
|
||||||
it != edges_end();
|
it != this->edges_end();
|
||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
Halfedge_handle he = it;
|
Halfedge_handle he = it;
|
||||||
|
|
@ -265,6 +268,7 @@ public :
|
||||||
::glVertex3d(p1[0],p1[1],p1[2]);
|
::glVertex3d(p1[0],p1[1],p1[2]);
|
||||||
::glVertex3d(p2[0],p2[1],p2[2]);
|
::glVertex3d(p2[0],p2[1],p2[2]);
|
||||||
}
|
}
|
||||||
|
::glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -274,8 +278,8 @@ public :
|
||||||
::glPointSize(5.0f);
|
::glPointSize(5.0f);
|
||||||
::glBegin(GL_POINTS);
|
::glBegin(GL_POINTS);
|
||||||
Point_iterator it;
|
Point_iterator it;
|
||||||
for(it = points_begin();
|
for(it = this->points_begin();
|
||||||
it != points_end();
|
it != this->points_end();
|
||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
const Point& p = *it;
|
const Point& p = *it;
|
||||||
|
|
@ -291,16 +295,19 @@ public :
|
||||||
static GLfloat agray[4] = {1,1,1, 1.0 };
|
static GLfloat agray[4] = {1,1,1, 1.0 };
|
||||||
glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agray);
|
glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agray);
|
||||||
|
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
glPolygonOffset( 1.0, 1.0 );
|
glPolygonOffset( 1.0, 1.0 );
|
||||||
glPolygonMode(GL_FRONT, GL_FILL);
|
glPolygonMode(GL_FRONT, GL_FILL);
|
||||||
glEnable(GL_POLYGON_OFFSET_FILL);
|
|
||||||
|
|
||||||
Facet_iterator hFacet;
|
Facet_iterator hFacet;
|
||||||
for(hFacet = facets_begin();
|
for(hFacet = this->facets_begin();
|
||||||
hFacet != facets_end();
|
hFacet != this->facets_end();
|
||||||
hFacet++)
|
hFacet++)
|
||||||
gl_draw_facet(hFacet,smooth);
|
gl_draw_facet(hFacet,smooth);
|
||||||
|
|
||||||
glPolygonOffset( 0.0, 0.0 );
|
glPolygonOffset( 0.0, 0.0 );
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gl_draw_facet(Facet_handle hFacet,
|
void gl_draw_facet(Facet_handle hFacet,
|
||||||
|
|
@ -362,8 +369,8 @@ public :
|
||||||
::glBegin(GL_LINES);
|
::glBegin(GL_LINES);
|
||||||
|
|
||||||
Facet_iterator hFacet;
|
Facet_iterator hFacet;
|
||||||
for(hFacet = facets_begin();
|
for(hFacet = this->facets_begin();
|
||||||
hFacet != facets_end();
|
hFacet != this->facets_end();
|
||||||
hFacet++)
|
hFacet++)
|
||||||
{
|
{
|
||||||
Point p = iso_barycentre(hFacet);
|
Point p = iso_barycentre(hFacet);
|
||||||
|
|
@ -383,8 +390,8 @@ public :
|
||||||
{
|
{
|
||||||
::glBegin(GL_LINES);
|
::glBegin(GL_LINES);
|
||||||
Vertex_iterator it;
|
Vertex_iterator it;
|
||||||
for(it = vertices_begin();
|
for(it = this->vertices_begin();
|
||||||
it != vertices_end();
|
it != this->vertices_end();
|
||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
const typename Vertex::Normal_3& normal = it->normal();
|
const typename Vertex::Normal_3& normal = it->normal();
|
||||||
|
|
@ -400,11 +407,11 @@ public :
|
||||||
// normals (per facet, then per vertex)
|
// normals (per facet, then per vertex)
|
||||||
void compute_normals_per_facet()
|
void compute_normals_per_facet()
|
||||||
{
|
{
|
||||||
std::for_each(facets_begin(),facets_end(),Facet_normal());
|
std::for_each(this->facets_begin(),this->facets_end(),Facet_normal());
|
||||||
}
|
}
|
||||||
void compute_normals_per_vertex()
|
void compute_normals_per_vertex()
|
||||||
{
|
{
|
||||||
std::for_each(vertices_begin(),vertices_end(),Vertex_normal());
|
std::for_each(this->vertices_begin(),this->vertices_end(),Vertex_normal());
|
||||||
}
|
}
|
||||||
void compute_normals()
|
void compute_normals()
|
||||||
{
|
{
|
||||||
|
|
@ -419,7 +426,7 @@ int nb_component()
|
||||||
unsigned int nb = 0;
|
unsigned int nb = 0;
|
||||||
tag_facets(0);
|
tag_facets(0);
|
||||||
Facet_handle seed_facet = NULL;
|
Facet_handle seed_facet = NULL;
|
||||||
while((seed_facet = get_facet_tag(0)) != NULL)
|
while((seed_facet = this->get_facet_tag(0)) != NULL)
|
||||||
{
|
{
|
||||||
nb++;
|
nb++;
|
||||||
tag_component(seed_facet,0,1);
|
tag_component(seed_facet,0,1);
|
||||||
|
|
@ -430,8 +437,8 @@ int nb_component()
|
||||||
// tag all facets
|
// tag all facets
|
||||||
void tag_facets(const int tag)
|
void tag_facets(const int tag)
|
||||||
{
|
{
|
||||||
for(Facet_iterator pFace = facets_begin();
|
for(Facet_iterator pFace = this->facets_begin();
|
||||||
pFace != facets_end();
|
pFace != this->facets_end();
|
||||||
pFace++)
|
pFace++)
|
||||||
pFace->tag(tag);
|
pFace->tag(tag);
|
||||||
}
|
}
|
||||||
|
|
@ -467,8 +474,8 @@ void tag_component(Facet_handle pSeedFacet,
|
||||||
// tag all halfedges
|
// tag all halfedges
|
||||||
void tag_halfedges(const int tag)
|
void tag_halfedges(const int tag)
|
||||||
{
|
{
|
||||||
for(Halfedge_iterator pHalfedge = halfedges_begin();
|
for(Halfedge_iterator pHalfedge = this->halfedges_begin();
|
||||||
pHalfedge != halfedges_end();
|
pHalfedge != this->halfedges_end();
|
||||||
pHalfedge++)
|
pHalfedge++)
|
||||||
pHalfedge->tag(tag);
|
pHalfedge->tag(tag);
|
||||||
}
|
}
|
||||||
|
|
@ -479,7 +486,7 @@ unsigned int nb_boundaries()
|
||||||
unsigned int nb = 0;
|
unsigned int nb = 0;
|
||||||
tag_halfedges(0);
|
tag_halfedges(0);
|
||||||
Halfedge_handle seed_halfedge = NULL;
|
Halfedge_handle seed_halfedge = NULL;
|
||||||
while((seed_halfedge = get_border_halfedge_tag(0)) != NULL)
|
while((seed_halfedge = this->get_border_halfedge_tag(0)) != NULL)
|
||||||
{
|
{
|
||||||
nb++;
|
nb++;
|
||||||
seed_halfedge->tag(1);
|
seed_halfedge->tag(1);
|
||||||
|
|
@ -501,21 +508,21 @@ unsigned int nb_boundaries()
|
||||||
void subdivide_sqrt3 ()
|
void subdivide_sqrt3 ()
|
||||||
{
|
{
|
||||||
// check for valid polygon mesh
|
// check for valid polygon mesh
|
||||||
if(size_of_facets() == 0)
|
if(this->size_of_facets() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
// subdivision
|
// subdivision
|
||||||
// We use that new vertices/halfedges/facets are appended at the end.
|
// We use that new vertices/halfedges/facets are appended at the end.
|
||||||
std::size_t nv = size_of_vertices();
|
std::size_t nv = this->size_of_vertices();
|
||||||
Vertex_iterator last_v = vertices_end();
|
Vertex_iterator last_v = this->vertices_end();
|
||||||
-- last_v; // the last of the old vertices
|
-- last_v; // the last of the old vertices
|
||||||
Edge_iterator last_e = edges_end();
|
Edge_iterator last_e = this->edges_end();
|
||||||
-- last_e; // the last of the old edges
|
-- last_e; // the last of the old edges
|
||||||
Facet_iterator last_f = facets_end();
|
Facet_iterator last_f = this->facets_end();
|
||||||
-- last_f; // the last of the old facets
|
-- last_f; // the last of the old facets
|
||||||
|
|
||||||
Facet_iterator f = facets_begin(); // create new centre vertices
|
Facet_iterator f = this->facets_begin(); // create new centre vertices
|
||||||
do {
|
do {
|
||||||
star_facet( f);
|
star_facet( f);
|
||||||
} while ( f++ != last_f);
|
} while ( f++ != last_f);
|
||||||
|
|
@ -527,7 +534,7 @@ void subdivide_sqrt3 ()
|
||||||
// ++e; // careful, incr. before flip since flip destroys current edge
|
// ++e; // careful, incr. before flip since flip destroys current edge
|
||||||
// flip_edge( h);
|
// flip_edge( h);
|
||||||
//};
|
//};
|
||||||
CGAL_postcondition(is_valid());
|
CGAL_postcondition(this->is_valid());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#---------------------------------------------------------------------#
|
#---------------------------------------------------------------------#
|
||||||
# include platform specific settings
|
# include platform specific settings
|
||||||
#---------------------------------------------------------------------#
|
#--------------------------------------------------------------------#
|
||||||
# Choose the right include file from the <cgalroot>/make directory.
|
# Choose the right include file from the <cgalroot>/make directory.
|
||||||
include $(CGAL_MAKEFILE)
|
include $(CGAL_MAKEFILE)
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ QTLDFLAGS = \
|
||||||
$(CGAL_QT_LDFLAGS) -lGL -lglut
|
$(CGAL_QT_LDFLAGS) -lGL -lglut
|
||||||
|
|
||||||
|
|
||||||
INTRO_LD_FLAGS=-L$(INTROSPEC_DIR) -lInstrospect
|
INTRO_LD_FLAGS=-L$(INTROSPEC_DIR) -lIntrospect
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------#
|
#---------------------------------------------------------------------#
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "jv_writer.h"
|
||||||
|
|
||||||
|
|
||||||
Mesh m_mesh;
|
Mesh m_mesh;
|
||||||
|
|
||||||
DS ridge_data;
|
DS ridge_data;
|
||||||
|
|
@ -36,7 +39,7 @@ void clean_DS(DS& L)
|
||||||
void
|
void
|
||||||
read_line(std::ifstream& stream_res, int& ridge_type,
|
read_line(std::ifstream& stream_res, int& ridge_type,
|
||||||
double& strength, double& sharpness,
|
double& strength, double& sharpness,
|
||||||
std::list<Point>& ridge_points)
|
std::vector<Point>& ridge_points)
|
||||||
{
|
{
|
||||||
const int max_line_size = 100000;
|
const int max_line_size = 100000;
|
||||||
char cline[max_line_size];
|
char cline[max_line_size];
|
||||||
|
|
@ -74,7 +77,7 @@ void load_data_from_file(DS& l, const char* file_res)
|
||||||
{
|
{
|
||||||
int ridge_type;
|
int ridge_type;
|
||||||
double strength, sharpness;
|
double strength, sharpness;
|
||||||
std::list<Point> ridge_points;
|
std::vector<Point> ridge_points;
|
||||||
|
|
||||||
read_line(stream_res, ridge_type, strength, sharpness,
|
read_line(stream_res, ridge_type, strength, sharpness,
|
||||||
ridge_points);
|
ridge_points);
|
||||||
|
|
@ -115,6 +118,7 @@ int main(int argc, char** argv) {
|
||||||
load_geom(argc, argv);
|
load_geom(argc, argv);
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
glutInit(&argc, argv);
|
||||||
|
|
||||||
if ( !QGLFormat::hasOpenGL() ) {
|
if ( !QGLFormat::hasOpenGL() ) {
|
||||||
qWarning( "This system has no OpenGL support. Exiting." );
|
qWarning( "This system has no OpenGL support. Exiting." );
|
||||||
|
|
@ -133,5 +137,45 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
main.show();
|
main.show();
|
||||||
|
|
||||||
|
//debug visu with a jvx file
|
||||||
|
std::cout << ridge_data.size() << std::endl;
|
||||||
|
DS_iterator iter_lines = ridge_data.begin(), iter_end = ridge_data.end();
|
||||||
|
|
||||||
|
std::ofstream out_jvx("debug.jvx");
|
||||||
|
CGAL::Javaview_writer<std::ofstream> jvw(out_jvx);
|
||||||
|
jvw.set_title("ridges");
|
||||||
|
jvw.write_header();
|
||||||
|
|
||||||
|
// //first the polysurf
|
||||||
|
// jvw.set_geometry_name("polysurf");
|
||||||
|
// jvw.begin_geometry();
|
||||||
|
// polyhedron_javaview_writer(jvw, P);
|
||||||
|
// jvw.end_geometry();
|
||||||
|
|
||||||
|
int compt = 0;
|
||||||
|
|
||||||
|
for (;iter_lines!=iter_end;iter_lines++) {
|
||||||
|
compt++;
|
||||||
|
// create the name of the ridge
|
||||||
|
std::ostringstream str;
|
||||||
|
str << "ridge " << compt;
|
||||||
|
jvw.set_geometry_name(str.str());
|
||||||
|
|
||||||
|
//color
|
||||||
|
if ((*iter_lines)->ridge_type ==BC) jvw.set_color(CGAL::BLUE);
|
||||||
|
else jvw.set_color(CGAL::RED);
|
||||||
|
|
||||||
|
//lines
|
||||||
|
jvw.begin_geometry();
|
||||||
|
polyline_javaview_writer(jvw, (*iter_lines)->ridge_points.begin(),
|
||||||
|
(*iter_lines)->ridge_points.end());
|
||||||
|
jvw.end_geometry();
|
||||||
|
}
|
||||||
|
|
||||||
|
jvw.write_footer();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
// A redefined items class for the Polyhedron_3 with
|
// A redefined items class for the Polyhedron_3 with
|
||||||
// a refined vertex class that contains monge data and ring_tag
|
// a refined vertex class that contains monge data and ring_tag
|
||||||
// a refined facet with a normal vector
|
// a refined facet with a normal vector + tag is_visited
|
||||||
// a refined halfedge with length
|
// a refined halfedge with length
|
||||||
template < class Refs, class Tag, class Pt, class FGeomTraits >
|
template < class Refs, class Tag, class Pt, class FGeomTraits >
|
||||||
class My_vertex:public CGAL::HalfedgeDS_vertex_base < Refs, Tag, Pt >
|
class My_vertex:public CGAL::HalfedgeDS_vertex_base < Refs, Tag, Pt >
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ Note : if the nb of collected points is less than the required min number of
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
./blind.exe -f data/ellipe0.003.off -d3 -m3 -a3
|
./blind.exe -f data/ellipe0.003.off -d4 -m4 -a3 -t4
|
||||||
./blind.exe -f data/poly2x^2+y^2-0.062500.off -d4 -m4 -a0 -t4
|
./blind.exe -f data/poly2x^2+y^2-0.062500.off -d4 -m4 -a0 -t4
|
||||||
./blind.exe -f data/poly2x^2+y^2-0.062500.off -d4 -m4 -p20 -t4
|
./blind.exe -f data/poly2x^2+y^2-0.062500.off -d4 -m4 -p20 -t4
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -383,19 +383,19 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//UMBOLICS
|
// //UMBOLICS
|
||||||
Umbilic_approximation umbilic_approximation;
|
// Umbilic_approximation umbilic_approximation;
|
||||||
std::vector<Umbilic*> umbilics;
|
// std::vector<Umbilic*> umbilics;
|
||||||
back_insert_iterator<std::vector<Umbilic*> > umb_it(umbilics);
|
// back_insert_iterator<std::vector<Umbilic*> > umb_it(umbilics);
|
||||||
umbilic_approximation.compute(P, umb_it, umb_size);
|
// umbilic_approximation.compute(P, umb_it, umb_size);
|
||||||
std::vector<Umbilic*>::iterator iter_umb = umbilics.begin(),
|
// std::vector<Umbilic*>::iterator iter_umb = umbilics.begin(),
|
||||||
iter_umb_end = umbilics.end();
|
// iter_umb_end = umbilics.end();
|
||||||
// output
|
// // output
|
||||||
std::cout << "nb of umbilics " << umbilics.size() << std::endl;
|
// std::cout << "nb of umbilics " << umbilics.size() << std::endl;
|
||||||
for (;iter_umb!=iter_umb_end;iter_umb++)
|
// for (;iter_umb!=iter_umb_end;iter_umb++)
|
||||||
{
|
// {
|
||||||
std::cout << "umbilic type " << (*iter_umb)->umb_type << std::endl;
|
// std::cout << "umbilic type " << (*iter_umb)->umb_type << std::endl;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ compute_one_ring(Vertex_handle v,
|
||||||
Vector_3 p0p;
|
Vector_3 p0p;
|
||||||
FT d = OneRingSize;
|
FT d = OneRingSize;
|
||||||
for (; itb != ite; itb++){
|
for (; itb != ite; itb++){
|
||||||
|
|
||||||
p = (*itb)->point();
|
p = (*itb)->point();
|
||||||
p0p = p0 - p;
|
p0p = p0 - p;
|
||||||
d = CGAL::sqrt(p0p*p0p);
|
d = CGAL::sqrt(p0p*p0p);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#define _RIDGE_3_H_
|
#define _RIDGE_3_H_
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/basic.h>
|
||||||
#include <pair.h>
|
#include <utility>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include "PolyhedralSurf_neighbors.h"
|
#include "PolyhedralSurf_neighbors.h"
|
||||||
#include "Umbilic.h"
|
#include "Umbilic.h"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue