diff --git a/Polyhedron/examples/Polyhedron/off2iv.cpp b/Polyhedron/examples/Polyhedron/off2iv.cpp deleted file mode 100644 index b1288b4d5fe..00000000000 --- a/Polyhedron/examples/Polyhedron/off2iv.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// Convert from OFF format to OpenInventor (.iv) format. - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -bool dummy_switch = false; -bool verbose = false; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " convert a CGAL object (OFF) to Open Inventor .iv " - "format." << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* iname = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - iname = filename[0]; - } - if ( !*p_in) { - cerr << argv[0] << ": error: cannot open file '"<< iname - << "' for reading." < 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." < -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -bool verbose = false; -bool binary = false; -bool skel = false; -bool noc = false; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-b", argv[i]) == 0) - binary = true; - else if ( strcmp( "-skel", argv[i]) == 0) - skel = true; - else if ( strcmp( "-noc", argv[i]) == 0) - noc = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " copy an object in OFF." << endl; - cerr << " -b binary (default is ASCII)." << endl; - cerr << " -skel Geomview SKEL format." << endl; - cerr << " -noc no comments in file." << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* iname = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - iname = filename[0]; - } - if ( !*p_in) { - cerr << argv[0] << ": error: cannot open file '"<< iname - << "' for reading." << endl; - exit( 1); - } - - const char* oname = "cout"; - ostream* p_out = &cout; - ofstream out; - if ( n > 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." < -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -bool verbose = false; -bool binary = false; - -typedef CGAL::Simple_cartesian Kernel; -typedef Kernel::Point_3 Point; -typedef Kernel::Vector_3 Vector; -typedef CGAL::Polyhedron_3 Polyhedron; -typedef Polyhedron::Vertex_iterator Vertex_iterator; -typedef Polyhedron::Facet_iterator Facet_iterator; -typedef Polyhedron::Halfedge_handle Halfedge_handle; - - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-b", argv[i]) == 0) - binary = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " convert a CGAL object (OFF) to StereoLithography StL " - "format." << endl; - cerr << " -v verbose." << endl; - cerr << " -b binary." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* iname = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - iname = filename[0]; - } - if ( !*p_in) { - cerr << argv[0] << ": error: cannot open file '"<< iname - << "' for reading." <> P; - vout << " .... done." << endl; - - if ( !*p_in) { - cerr << argv[0] << " read error: while reading file '"<< iname << "'." - << endl; - exit( 1); - } - - const char* oname = "cout"; - ostream* p_out = &cout; - ofstream out; - if ( n > 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." <point(); - double minx = p.x(); - double miny = p.y(); - double minz = p.z(); - for ( ; vi != P.vertices_end(); ++vi) { - p = vi->point(); - if ( p.x() < minx) - minx = p.x(); - if ( p.y() < miny) - miny = p.y(); - if ( p.z() < minz) - minz = p.z(); - } - // translate into positive octant - Vector trans( -minx, -miny, -minz); - for ( Vertex_iterator i = P.vertices_begin(); i != P.vertices_end(); ++i) { - i->point() = i->point() + trans; - } - // write triangles - for ( Facet_iterator i = P.facets_begin(); i != P.facets_end(); ++i) { - Halfedge_handle h = i->halfedge(); - if ( h->next()->next()->next() != h) { - cerr << argv[0] << " format error: polyhedron in file '"<< - iname << "' is not triangulated." << endl; - exit( 1); - } - Point p = h->vertex()->point(); - Point q = h->next()->vertex()->point(); - Point r = h->next()->next()->vertex()->point(); - // compute normal - Vector n = CGAL::cross_product( q-p, r-p); - Vector norm = n / std::sqrt( n * n); - *p_out << " facet normal " << norm << endl; - *p_out << " outer loop " << endl; - *p_out << " vertex " << p << endl; - *p_out << " vertex " << q << endl; - *p_out << " vertex " << r << endl; - *p_out << " endloop " << endl; - *p_out << " endfacet " << endl; - } - - *p_out << "endsolid " << oname << endl; - vout << " .... done." << endl; - - if ( !*p_in) { - cerr << argv[0] << " read error: while reading file '"<< iname << "'." - << endl; - exit( 1); - } - if ( !*p_out) { - cerr << argv[0] <<" write error: while writing file '"<< oname << "'." - << endl; - exit( 1); - } - - return 0; -} -// EOF // diff --git a/Polyhedron/examples/Polyhedron/off2vrml.cpp b/Polyhedron/examples/Polyhedron/off2vrml.cpp deleted file mode 100644 index dbf4a18419b..00000000000 --- a/Polyhedron/examples/Polyhedron/off2vrml.cpp +++ /dev/null @@ -1,113 +0,0 @@ -// Convert from OFF format to VRML (.wrl) 1.0 or 2.0 format. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -bool verbose = false; -int version = 1; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-2", argv[i]) == 0) - version = 2; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " convert a CGAL object (OFF) to VRML .wrl format." - << endl; - cerr << " -2 VRML 2.0 (default is VRML 1.0)." << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* iname = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - iname = filename[0]; - } - if ( !*p_in) { - cerr << argv[0] << ": error: cannot open file '"<< iname - << "' for reading." < 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." < -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -bool verbose = false; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " convert a CGAL object (OFF) to Wavefront obj format." - << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* iname = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - iname = filename[0]; - } - if ( !*p_in) { - cerr << argv[0] << ": error: cannot open file '"<< iname - << "' for reading." < 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." < -#include -#include -#include -#include -#include -#include -#include -#include - - -using namespace std; - -bool verbose = false; -bool unitcube = false; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[1] = { NULL }; // stop compiler warning (too hard to rewrite the code to avoid it) - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-unit", argv[i]) == 0) - unitcube = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 1 ) { - filename[ n++] = argv[i]; - } else { - n++; - break; - } - } - if ((n > 1) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << "Usage: " << argv[0] << " [] []" << endl; - cerr << " computes the bbox of the coordinates of an OFF object." - << endl; - cerr << " -unit prints transformation to unit cube." << endl; - cerr << " (can be used with 'off_transform')" << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream verr( verbose); - verr << argv[0] << ": verbosity on." << endl; - - const char* name = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - name = filename[0]; - } - if ( ! * p_in) { - cerr << argv[0] << ": error: cannot open file '"<< name - << "' for reading." < 0 && 2/d < s) - s = 2/d; - d = bbox.ymax() - bbox.ymin(); - if ( d > 0 && 2/d < s) - s = 2/d; - d = bbox.zmax() - bbox.zmin(); - if ( d > 0 && 2/d < s) - s = 2/d; - if ( s == DBL_MAX) - s = 1; - cout << "-trans " << (-(bbox.xmin() + bbox.xmax())/2) - << " " << (-(bbox.ymin() + bbox.ymax())/2) - << " " << (-(bbox.zmin() + bbox.zmax())/2) - << " -scale " << s << endl; - } - return 0; -} -// EOF // diff --git a/Polyhedron/examples/Polyhedron/off_glue.cpp b/Polyhedron/examples/Polyhedron/off_glue.cpp deleted file mode 100644 index 8c2c3e5bd10..00000000000 --- a/Polyhedron/examples/Polyhedron/off_glue.cpp +++ /dev/null @@ -1,206 +0,0 @@ -// Glue vertices of a polyhedron together that have equal coordinate values. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -typedef CGAL::Simple_cartesian Kernel; -typedef Kernel::Point_3 Point; -typedef Kernel::Vector_3 Vector; -struct Vertex { - Point point; - Vector normal; - int index; -}; -typedef vector Vertex_vector; -typedef Vertex_vector::iterator VIterator; - -struct VertexComp { - bool operator()( const Vertex* v, const Vertex* w) const { - return ( v->point.x() < w->point.x() || - (v->point.x() == w->point.x() && v->point.y() < w->point.y()) || - (v->point.x() == w->point.x() && (v->point.y() == w->point.y() - && v->point.z() < w->point.z()))); - } -}; - -bool verbose = false; -bool binary = false; -bool skel = false; -bool noc = false; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i=1 ; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-b", argv[i]) == 0) - binary = true; - else if ( strcmp( "-skel", argv[i]) == 0) - skel = true; - else if ( strcmp( "-noc", argv[i]) == 0) - noc = true; - else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " glues vertices of equal coordinates together." << endl; - cerr << " -b binary output (default is ASCII)." << endl; - cerr << " -skel Geomview SKEL format." << endl; - cerr << " -noc no comments in file." << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream vout( verbose); - vout << argv[0] << ": verbosity on." << endl; - - const char* name = ""; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - name = filename[0]; - } - if ( !in) { - cerr << argv[0] << ": error: cannot open file '"<< name - << "' for reading." < sorted_vertices; - // Avoid any reallocation - vertices.reserve( scanner.size_of_vertices()); - sorted_vertices.reserve( scanner.size_of_vertices()); - - float x, y, z; - for (std::size_t i = 0; i < scanner.size_of_vertices(); i++) { - Vertex vertex; - scanner.scan_vertex( x, y, z); - vertex.point = Point( x, y, z); - //scanner.scan_normal( x, y, z); - vertex.normal = Vector( x, y, z); - scanner.skip_to_next_vertex( i); - vertex.index = -1; - vertices.push_back( vertex); - sorted_vertices.push_back( & vertices.back()); - } - vout << scanner.size_of_vertices() << " vertices read." << endl; - - sort( sorted_vertices.begin(), sorted_vertices.end(), VertexComp()); - int current_index = 0; - sorted_vertices[0]->index = 0; - for (std::size_t i = 1; i < scanner.size_of_vertices(); i++) { - if ( sorted_vertices[i]->point != sorted_vertices[i-1]->point) - current_index++; - sorted_vertices[i]->index = current_index; - } - current_index++; - vout << "Merged to " << current_index << " vertices." << endl; - - const char* oname = ""; - ostream* p_out = &cout; - ofstream out; - if ( n > 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." <::iterator v = sorted_vertices.begin(); - writer.write_vertex((*v)->point.x(), (*v)->point.y(), (*v)->point.z()); - if ( scanner.has_normals()) { - writer.write_normal((*v)->normal.x(), - (*v)->normal.y(), - (*v)->normal.z()); - } - ++v; - for ( ; v != sorted_vertices.end(); ++v) { - if ( (*v)->index != (*(v-1))->index) { - writer.write_vertex( (*v)->point.x(), - (*v)->point.y(), - (*v)->point.z()); - if ( scanner.has_normals()) { - writer.write_normal( (*v)->normal.x(), - (*v)->normal.y(), - (*v)->normal.z()); - } - } - } - - // Copy facets and translate vertex indices. - writer.write_facet_header(); - for (std::size_t i = 0; i < scanner.size_of_facets(); i++) { - std::size_t no; // number of vertices of a facet. - scanner.scan_facet( no, i); - writer.write_facet_begin( no); - for ( std::size_t j = 0; j < no; j++) { - std::size_t index; - scanner.scan_facet_vertex_index( index, i); - writer.write_facet_vertex_index( vertices[index].index); - } - scanner.skip_to_next_facet( i); - writer.write_facet_end(); - } - writer.write_footer(); - vout << " .... done." << endl; - - if ( ! * p_in) { - cerr << argv[0] << " read error: while reading file '"<< name << "'." - << endl; - exit( 1); - } - if ( !*p_out) { - cerr << argv[0] << " write error: while writing file '"<< oname - << "'." << endl; - exit( 1); - } - return 0; -} diff --git a/Polyhedron/examples/Polyhedron/off_transform.cpp b/Polyhedron/examples/Polyhedron/off_transform.cpp deleted file mode 100644 index 562193795d0..00000000000 --- a/Polyhedron/examples/Polyhedron/off_transform.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// Applies translation and scaling to an OFF object. - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -typedef CGAL::Simple_cartesian Kernel; -typedef Kernel::Point_3 Point; -typedef Kernel::Vector_3 Vector; - -bool verbose = false; -bool binary = false; -bool skel = false; -bool noc = false; - -double transx = 0.0; -double transy = 0.0; -double transz = 0.0; -double scale = 1.0; - -// main function with standard unix commandline arguments -// ------------------------------------------------------ -int main( int argc, char **argv) { - int n = 0; // number of filenames - char *filename[2]; - bool help = false; - for (int i = 1; i < argc; i++) { // check commandline options - if ( strcmp( "-v", argv[i]) == 0) - verbose = true; - else if ( strcmp( "-b", argv[i]) == 0) - binary = true; - else if ( strcmp( "-skel", argv[i]) == 0) - skel = true; - else if ( strcmp( "-noc", argv[i]) == 0) - noc = true; - else if ( strcmp( "-scale", argv[i]) == 0) { - i++; - if ( i < argc) { - scale = atof( argv[i]); - } else { - cerr << argv[0] << ": error: -scale needs a double parameter." - << endl; - help = true; - } - } else if ( strcmp( "-trans", argv[i]) == 0) { - i++; - if ( i+2 < argc) { - transx = atof( argv[i]); - i++; - transy = atof( argv[i]); - i++; - transz = atof( argv[i]); - } else { - cerr << argv[0] << ": error: -trans needs three double " - "parameters." << endl; - help = true; - } - } else if ( (strcmp( "-h", argv[i]) == 0) || - (strcmp( "-help", argv[i]) == 0)) - help = true; - else if ( n < 2 ) { - filename[ n++] = argv[i]; - } else { - ++n; - break; - } - } - if ((n > 2) || help) { - if ( ! help) - cerr << "Error: in parameter list" << endl; - cerr << "Usage: " << argv[0] << " [] [ []]" - << endl; - cerr << " transforms coordinate values of an OFF object." - << endl; - cerr << " -trans translation." << endl; - cerr << " -scale uniform scaling." << endl; - cerr << " -b binary (default is ASCII)." - << endl; - cerr << " -skel Geomview SKEL format." << endl; - cerr << " -noc no comments in file." << endl; - cerr << " -v verbose." << endl; - exit( ! help); - } - - CGAL::Verbose_ostream verr( verbose); - verr << argv[0] << ": verbosity on." << endl; - - const char* name = "cin"; - istream* p_in = &cin; - ifstream in; - if ( n > 0) { - in.open( filename[0]); - p_in = ∈ - name = filename[0]; - } - if ( ! * p_in) { - cerr << argv[0] << ": error: cannot open file '"<< name - << "' for reading." < 1) { - out.open( filename[1]); - p_out = &out; - oname = filename[1]; - } - if ( !*p_out) { - cerr << argv[0] << ": error: cannot open file '"<< oname - << "' for writing." < +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +bool dummy_switch = false; +bool verbose = false; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " convert a CGAL object (OFF) to Open Inventor .iv " + "format." << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* iname = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + iname = filename[0]; + } + if ( !*p_in) { + cerr << argv[0] << ": error: cannot open file '"<< iname + << "' for reading." < 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." < +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +bool verbose = false; +bool binary = false; +bool skel = false; +bool noc = false; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-b", argv[i]) == 0) + binary = true; + else if ( strcmp( "-skel", argv[i]) == 0) + skel = true; + else if ( strcmp( "-noc", argv[i]) == 0) + noc = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " copy an object in OFF." << endl; + cerr << " -b binary (default is ASCII)." << endl; + cerr << " -skel Geomview SKEL format." << endl; + cerr << " -noc no comments in file." << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* iname = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + iname = filename[0]; + } + if ( !*p_in) { + cerr << argv[0] << ": error: cannot open file '"<< iname + << "' for reading." << endl; + exit( 1); + } + + const char* oname = "cout"; + ostream* p_out = &cout; + ofstream out; + if ( n > 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." < +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +bool verbose = false; +bool binary = false; + +typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; +typedef CGAL::Polyhedron_3 Polyhedron; +typedef Polyhedron::Vertex_iterator Vertex_iterator; +typedef Polyhedron::Facet_iterator Facet_iterator; +typedef Polyhedron::Halfedge_handle Halfedge_handle; + + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-b", argv[i]) == 0) + binary = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " convert a CGAL object (OFF) to StereoLithography StL " + "format." << endl; + cerr << " -v verbose." << endl; + cerr << " -b binary." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* iname = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + iname = filename[0]; + } + if ( !*p_in) { + cerr << argv[0] << ": error: cannot open file '"<< iname + << "' for reading." <> P; + vout << " .... done." << endl; + + if ( !*p_in) { + cerr << argv[0] << " read error: while reading file '"<< iname << "'." + << endl; + exit( 1); + } + + const char* oname = "cout"; + ostream* p_out = &cout; + ofstream out; + if ( n > 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." <point(); + double minx = p.x(); + double miny = p.y(); + double minz = p.z(); + for ( ; vi != P.vertices_end(); ++vi) { + p = vi->point(); + if ( p.x() < minx) + minx = p.x(); + if ( p.y() < miny) + miny = p.y(); + if ( p.z() < minz) + minz = p.z(); + } + // translate into positive octant + Vector trans( -minx, -miny, -minz); + for ( Vertex_iterator i = P.vertices_begin(); i != P.vertices_end(); ++i) { + i->point() = i->point() + trans; + } + // write triangles + for ( Facet_iterator i = P.facets_begin(); i != P.facets_end(); ++i) { + Halfedge_handle h = i->halfedge(); + if ( h->next()->next()->next() != h) { + cerr << argv[0] << " format error: polyhedron in file '"<< + iname << "' is not triangulated." << endl; + exit( 1); + } + Point p = h->vertex()->point(); + Point q = h->next()->vertex()->point(); + Point r = h->next()->next()->vertex()->point(); + // compute normal + Vector n = CGAL::cross_product( q-p, r-p); + Vector norm = n / std::sqrt( n * n); + *p_out << " facet normal " << norm << endl; + *p_out << " outer loop " << endl; + *p_out << " vertex " << p << endl; + *p_out << " vertex " << q << endl; + *p_out << " vertex " << r << endl; + *p_out << " endloop " << endl; + *p_out << " endfacet " << endl; + } + + *p_out << "endsolid " << oname << endl; + vout << " .... done." << endl; + + if ( !*p_in) { + cerr << argv[0] << " read error: while reading file '"<< iname << "'." + << endl; + exit( 1); + } + if ( !*p_out) { + cerr << argv[0] <<" write error: while writing file '"<< oname << "'." + << endl; + exit( 1); + } + + return 0; +} +// EOF // diff --git a/Polyhedron/examples/Polyhedron/off2vrml.cin b/Stream_support/examples/Stream_support/off2vrml.cin similarity index 100% rename from Polyhedron/examples/Polyhedron/off2vrml.cin rename to Stream_support/examples/Stream_support/off2vrml.cin diff --git a/Stream_support/examples/Stream_support/off2vrml.cpp b/Stream_support/examples/Stream_support/off2vrml.cpp new file mode 100644 index 00000000000..5a12db9c481 --- /dev/null +++ b/Stream_support/examples/Stream_support/off2vrml.cpp @@ -0,0 +1,113 @@ +// Convert from OFF format to VRML (.wrl) 1.0 or 2.0 format. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +bool verbose = false; +int version = 1; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-2", argv[i]) == 0) + version = 2; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " convert a CGAL object (OFF) to VRML .wrl format." + << endl; + cerr << " -2 VRML 2.0 (default is VRML 1.0)." << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* iname = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + iname = filename[0]; + } + if ( !*p_in) { + cerr << argv[0] << ": error: cannot open file '"<< iname + << "' for reading." < 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." < +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +bool verbose = false; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " convert a CGAL object (OFF) to Wavefront obj format." + << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* iname = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + iname = filename[0]; + } + if ( !*p_in) { + cerr << argv[0] << ": error: cannot open file '"<< iname + << "' for reading." < 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." < +#include +#include +#include +#include +#include +#include +#include +#include + + +using namespace std; + +bool verbose = false; +bool unitcube = false; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[1] = { NULL }; // stop compiler warning (too hard to rewrite the code to avoid it) + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-unit", argv[i]) == 0) + unitcube = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 1 ) { + filename[ n++] = argv[i]; + } else { + n++; + break; + } + } + if ((n > 1) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << "Usage: " << argv[0] << " [] []" << endl; + cerr << " computes the bbox of the coordinates of an OFF object." + << endl; + cerr << " -unit prints transformation to unit cube." << endl; + cerr << " (can be used with 'off_transform')" << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream verr( verbose); + verr << argv[0] << ": verbosity on." << endl; + + const char* name = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + name = filename[0]; + } + if ( ! * p_in) { + cerr << argv[0] << ": error: cannot open file '"<< name + << "' for reading." < 0 && 2/d < s) + s = 2/d; + d = bbox.ymax() - bbox.ymin(); + if ( d > 0 && 2/d < s) + s = 2/d; + d = bbox.zmax() - bbox.zmin(); + if ( d > 0 && 2/d < s) + s = 2/d; + if ( s == DBL_MAX) + s = 1; + cout << "-trans " << (-(bbox.xmin() + bbox.xmax())/2) + << " " << (-(bbox.ymin() + bbox.ymax())/2) + << " " << (-(bbox.zmin() + bbox.zmax())/2) + << " -scale " << s << endl; + } + return 0; +} +// EOF // diff --git a/Polyhedron/examples/Polyhedron/off_glue.cin b/Stream_support/examples/Stream_support/off_glue.cin similarity index 100% rename from Polyhedron/examples/Polyhedron/off_glue.cin rename to Stream_support/examples/Stream_support/off_glue.cin diff --git a/Stream_support/examples/Stream_support/off_glue.cpp b/Stream_support/examples/Stream_support/off_glue.cpp new file mode 100644 index 00000000000..6948c8902b0 --- /dev/null +++ b/Stream_support/examples/Stream_support/off_glue.cpp @@ -0,0 +1,206 @@ +// Glue vertices of a polyhedron together that have equal coordinate values. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; +struct Vertex { + Point point; + Vector normal; + int index; +}; +typedef vector Vertex_vector; +typedef Vertex_vector::iterator VIterator; + +struct VertexComp { + bool operator()( const Vertex* v, const Vertex* w) const { + return ( v->point.x() < w->point.x() || + (v->point.x() == w->point.x() && v->point.y() < w->point.y()) || + (v->point.x() == w->point.x() && (v->point.y() == w->point.y() + && v->point.z() < w->point.z()))); + } +}; + +bool verbose = false; +bool binary = false; +bool skel = false; +bool noc = false; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i=1 ; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-b", argv[i]) == 0) + binary = true; + else if ( strcmp( "-skel", argv[i]) == 0) + skel = true; + else if ( strcmp( "-noc", argv[i]) == 0) + noc = true; + else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " glues vertices of equal coordinates together." << endl; + cerr << " -b binary output (default is ASCII)." << endl; + cerr << " -skel Geomview SKEL format." << endl; + cerr << " -noc no comments in file." << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream vout( verbose); + vout << argv[0] << ": verbosity on." << endl; + + const char* name = ""; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + name = filename[0]; + } + if ( !in) { + cerr << argv[0] << ": error: cannot open file '"<< name + << "' for reading." < sorted_vertices; + // Avoid any reallocation + vertices.reserve( scanner.size_of_vertices()); + sorted_vertices.reserve( scanner.size_of_vertices()); + + float x, y, z; + for (std::size_t i = 0; i < scanner.size_of_vertices(); i++) { + Vertex vertex; + scanner.scan_vertex( x, y, z); + vertex.point = Point( x, y, z); + //scanner.scan_normal( x, y, z); + vertex.normal = Vector( x, y, z); + scanner.skip_to_next_vertex( i); + vertex.index = -1; + vertices.push_back( vertex); + sorted_vertices.push_back( & vertices.back()); + } + vout << scanner.size_of_vertices() << " vertices read." << endl; + + sort( sorted_vertices.begin(), sorted_vertices.end(), VertexComp()); + int current_index = 0; + sorted_vertices[0]->index = 0; + for (std::size_t i = 1; i < scanner.size_of_vertices(); i++) { + if ( sorted_vertices[i]->point != sorted_vertices[i-1]->point) + current_index++; + sorted_vertices[i]->index = current_index; + } + current_index++; + vout << "Merged to " << current_index << " vertices." << endl; + + const char* oname = ""; + ostream* p_out = &cout; + ofstream out; + if ( n > 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." <::iterator v = sorted_vertices.begin(); + writer.write_vertex((*v)->point.x(), (*v)->point.y(), (*v)->point.z()); + if ( scanner.has_normals()) { + writer.write_normal((*v)->normal.x(), + (*v)->normal.y(), + (*v)->normal.z()); + } + ++v; + for ( ; v != sorted_vertices.end(); ++v) { + if ( (*v)->index != (*(v-1))->index) { + writer.write_vertex( (*v)->point.x(), + (*v)->point.y(), + (*v)->point.z()); + if ( scanner.has_normals()) { + writer.write_normal( (*v)->normal.x(), + (*v)->normal.y(), + (*v)->normal.z()); + } + } + } + + // Copy facets and translate vertex indices. + writer.write_facet_header(); + for (std::size_t i = 0; i < scanner.size_of_facets(); i++) { + std::size_t no; // number of vertices of a facet. + scanner.scan_facet( no, i); + writer.write_facet_begin( no); + for ( std::size_t j = 0; j < no; j++) { + std::size_t index; + scanner.scan_facet_vertex_index( index, i); + writer.write_facet_vertex_index( vertices[index].index); + } + scanner.skip_to_next_facet( i); + writer.write_facet_end(); + } + writer.write_footer(); + vout << " .... done." << endl; + + if ( ! * p_in) { + cerr << argv[0] << " read error: while reading file '"<< name << "'." + << endl; + exit( 1); + } + if ( !*p_out) { + cerr << argv[0] << " write error: while writing file '"<< oname + << "'." << endl; + exit( 1); + } + return 0; +} diff --git a/Polyhedron/examples/Polyhedron/off_transform.cin b/Stream_support/examples/Stream_support/off_transform.cin similarity index 100% rename from Polyhedron/examples/Polyhedron/off_transform.cin rename to Stream_support/examples/Stream_support/off_transform.cin diff --git a/Stream_support/examples/Stream_support/off_transform.cpp b/Stream_support/examples/Stream_support/off_transform.cpp new file mode 100644 index 00000000000..34b334172e2 --- /dev/null +++ b/Stream_support/examples/Stream_support/off_transform.cpp @@ -0,0 +1,164 @@ +// Applies translation and scaling to an OFF object. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; + +bool verbose = false; +bool binary = false; +bool skel = false; +bool noc = false; + +double transx = 0.0; +double transy = 0.0; +double transz = 0.0; +double scale = 1.0; + +// main function with standard unix commandline arguments +// ------------------------------------------------------ +int main( int argc, char **argv) { + int n = 0; // number of filenames + char *filename[2]; + bool help = false; + for (int i = 1; i < argc; i++) { // check commandline options + if ( strcmp( "-v", argv[i]) == 0) + verbose = true; + else if ( strcmp( "-b", argv[i]) == 0) + binary = true; + else if ( strcmp( "-skel", argv[i]) == 0) + skel = true; + else if ( strcmp( "-noc", argv[i]) == 0) + noc = true; + else if ( strcmp( "-scale", argv[i]) == 0) { + i++; + if ( i < argc) { + scale = atof( argv[i]); + } else { + cerr << argv[0] << ": error: -scale needs a double parameter." + << endl; + help = true; + } + } else if ( strcmp( "-trans", argv[i]) == 0) { + i++; + if ( i+2 < argc) { + transx = atof( argv[i]); + i++; + transy = atof( argv[i]); + i++; + transz = atof( argv[i]); + } else { + cerr << argv[0] << ": error: -trans needs three double " + "parameters." << endl; + help = true; + } + } else if ( (strcmp( "-h", argv[i]) == 0) || + (strcmp( "-help", argv[i]) == 0)) + help = true; + else if ( n < 2 ) { + filename[ n++] = argv[i]; + } else { + ++n; + break; + } + } + if ((n > 2) || help) { + if ( ! help) + cerr << "Error: in parameter list" << endl; + cerr << "Usage: " << argv[0] << " [] [ []]" + << endl; + cerr << " transforms coordinate values of an OFF object." + << endl; + cerr << " -trans translation." << endl; + cerr << " -scale uniform scaling." << endl; + cerr << " -b binary (default is ASCII)." + << endl; + cerr << " -skel Geomview SKEL format." << endl; + cerr << " -noc no comments in file." << endl; + cerr << " -v verbose." << endl; + exit( ! help); + } + + CGAL::Verbose_ostream verr( verbose); + verr << argv[0] << ": verbosity on." << endl; + + const char* name = "cin"; + istream* p_in = &cin; + ifstream in; + if ( n > 0) { + in.open( filename[0]); + p_in = ∈ + name = filename[0]; + } + if ( ! * p_in) { + cerr << argv[0] << ": error: cannot open file '"<< name + << "' for reading." < 1) { + out.open( filename[1]); + p_out = &out; + oname = filename[1]; + } + if ( !*p_out) { + cerr << argv[0] << ": error: cannot open file '"<< oname + << "' for writing." <