⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_stack.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
📖 第 1 页 / 共 2 页
字号:
                    if ( ! out) {                        cerr << "Error: saveoff cannot write OFF file '"                              << argv[i+1] << "' correctly." << endl;                        error = 5;                    }                }                ++i;            } else {                error = 4;            }        } else if ( strcmp( argv[i], "dump") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }	    std::cout << nef.back();	    /*        } else if ( strcmp( argv[i], "sorted") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            nef.back().dump(true, std::cout);	    */	} else if ( strcmp( argv[i], "stats") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }	  	    std::cout << "Number of Vertices " << nef.back().number_of_vertices() << std::endl;	    std::cout << "Number of Facets " << nef.back().number_of_facets() << std::endl;        } else if ( strcmp( argv[i], "vis") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }#ifdef CGAL_NEF3_OLD_VISUALIZATION	    nef.back().visualize();#elif defined (CGAL_USE_QT)	    QApplication a(argc, argv);	    CGAL::Qt_widget_Nef_3<Nef_polyhedron>* w = 	      new CGAL::Qt_widget_Nef_3<Nef_polyhedron>(nef.back());	    a.setMainWidget(w);	    w->show();	    a.exec();#else	    std::cout << "Sorry, this demo needs QT..." << std::endl;#endif        } else if ( strcmp( argv[i], "trans") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            if ( assert_argc( argv[i], 4, argc - i - 1)) {                NT x( std::atoi( argv[i+1]));                NT y( std::atoi( argv[i+2]));                NT z( std::atoi( argv[i+3]));                NT w( std::atoi( argv[i+4]));		if(w == 0)		  error = 4;		else {                  typename Kernel::Vector_3 vec( x, y, z, w);		  typename Kernel::Aff_transformation_3 aff( CGAL::TRANSLATION, vec);		  nef.back().transform( aff);		  i += 4;		}            } else {                error = 4;            }	           } else if ( strcmp( argv[i], "scale") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            if ( assert_argc( argv[i], 2, argc - i - 1)) {                NT s( std::atoi( argv[i+1]));                NT w( std::atoi( argv[i+2]));                typename Kernel::Aff_transformation_3 aff( CGAL::SCALING, s, w);                nef.back().transform( aff);                i += 2;            } else {                error = 4;            }        } else if ( strcmp( argv[i], "rotx") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            if ( assert_argc( argv[i], 1, argc - i - 1)) {                double alpha = CGAL_PI * std::atof( argv[i+1]) / 180.0;                NT diry = std::sin( alpha) * 256*256*256;                NT dirx = std::cos( alpha) * 256*256*256;                NT sin_alpha;                NT cos_alpha;                NT w;                CGAL::rational_rotation_approximation( dirx, diry, 						       sin_alpha, cos_alpha, w,						       NT(1), NT( 1000000));                typename Kernel::Aff_transformation_3 aff( w, NT(0), NT(0),                                                  NT(0), cos_alpha,-sin_alpha,                                                  NT(0), sin_alpha, cos_alpha,                                                  w);                nef.back().transform( aff);                ++i;            } else {                error = 4;            }        } else if ( strcmp( argv[i], "roty") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            if ( assert_argc( argv[i], 1, argc - i - 1)) {                double alpha = CGAL_PI * std::atof( argv[i+1]) / 180.0;                NT diry = std::sin( alpha) * 256*256*256;                NT dirx = std::cos( alpha) * 256*256*256;                NT sin_alpha;                NT cos_alpha;                NT w;                CGAL::rational_rotation_approximation( dirx, diry, 						       sin_alpha, cos_alpha, w,						       NT(1), NT( 1000000));                typename Kernel::Aff_transformation_3 aff( cos_alpha, NT(0), sin_alpha,                                                  NT(0), w, NT(0),                                                  -sin_alpha, NT(0), cos_alpha,                                                  w);                nef.back().transform( aff);                ++i;            } else {                error = 4;            }        } else if ( strcmp( argv[i], "rotz") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            if ( assert_argc( argv[i], 1, argc - i - 1)) {                double alpha = CGAL_PI * std::atof( argv[i+1]) / 180.0;                NT diry = std::sin( alpha) * 256*256*256;                NT dirx = std::cos( alpha) * 256*256*256;                NT sin_alpha;                NT cos_alpha;                NT w;                CGAL::rational_rotation_approximation( dirx, diry, 						       sin_alpha, cos_alpha, w,						       NT(1), NT( 1000000));                typename Kernel::Aff_transformation_3 aff( cos_alpha,-sin_alpha, NT(0),                                                  sin_alpha, cos_alpha, NT(0),                                                  NT(0), NT(0), w,                                                  w);                nef.back().transform( aff);                ++i;            } else {                error = 4;            }        } else if ( strcmp( argv[i], "inters") == 0) {            if ( nef.size() < 2) {                cerr << "Error: '" << argv[i] << "': less than 2 elements on "                        "stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf2 = nef.back();            nef.pop_back();	    Nef_polyhedron nf = nf1.intersection( nf2);            nef.push_back( nf);        } else if ( strcmp( argv[i], "union") == 0) {            if ( nef.size() < 2) {                cerr << "Error: '" << argv[i] << "': less than 2 elements on "                        "stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf2 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.join( nf2);            nef.push_back( nf);        } else if ( strcmp( argv[i], "diff") == 0) {            if ( nef.size() < 2) {                cerr << "Error: '" << argv[i] << "': less than 2 elements on "                        "stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf2 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.difference( nf2);            nef.push_back( nf);        } else if ( strcmp( argv[i], "symdiff") == 0) {            if ( nef.size() < 2) {                cerr << "Error: '" << argv[i] << "': less than 2 elements on "                        "stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf2 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.symmetric_difference( nf2);            nef.push_back( nf);        } else if ( strcmp( argv[i], "compl") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.complement();            nef.push_back( nf);        } else if ( strcmp( argv[i], "int") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.interior();            nef.push_back( nf);        } else if ( strcmp( argv[i], "clos") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.closure();            nef.push_back( nf);        } else if ( strcmp( argv[i], "bnd") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.boundary();            nef.push_back( nf);        } else if ( strcmp( argv[i], "reg") == 0) {            if ( nef.size() == 0) {                cerr << "Error: '" << argv[i] << "' on empty stack." << endl;                error = 2;                continue;            }            Nef_polyhedron nf1 = nef.back();            nef.pop_back();            Nef_polyhedron nf = nf1.regularization();            nef.push_back( nf);        } else if ( strcmp( argv[i], "plane") == 0) {	  if ( assert_argc( argv[i], 4, argc - i - 1)) {	    NT a( std::atoi( argv[i+1]));	    NT b( std::atoi( argv[i+2]));	    NT c( std::atoi( argv[i+3]));	    NT d( std::atoi( argv[i+4]));	    typename Kernel::Plane_3 pl( a, b, c, d);	    Nef_polyhedron nf(pl);	    nef.push_back( nf);	    i += 4; 	  } else 	    error = 4;	} else if ( strcmp( argv[i], "start") == 0) {	  t.start();	} else if ( strcmp( argv[i], "stop") == 0) {	  t.stop();	} else if ( strcmp( argv[i], "time") == 0) {	  std::cerr << "Time " << t.time() << std::endl;	} else if ( strcmp( argv[i], "time") == 0) {	  t.reset();	} else {	    cerr << "Error: unkown command '" << argv[i]	         << "'. Try 'help' for help." << endl;	    error = 3;        }    }    return error;  }};CGAL_END_NAMESPACE#endif // CGAL_NEF_DEMO_STACK_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -