void compound() { TEveManager::Create(); TEveLine* ml = new TEveLine; ml->SetMainColor(kRed); ml->SetLineStyle(2); ml->SetLineWidth(3); gEve->InsertVizDBEntry("BigLine", ml); TEveCompound* cmp = new TEveCompound; cmp->SetMainColor(kGreen); gEve->AddElement(cmp); TRandom rnd(0); cmp->OpenCompound(); cmp->AddElement(random_line(rnd, 20, 10)); cmp->AddElement(random_line(rnd, 20, 10)); TEveLine* line = random_line(rnd, 20, 12); line->ApplyVizTag("BigLine"); cmp->AddElement(line); cmp->CloseCompound(); // Projected view TEveViewer *viewer = gEve->SpawnNewViewer("Projected"); TEveScene *scene = gEve->SpawnNewScene("Projected Event"); viewer->AddScene(scene); { TGLViewer* v = viewer->GetGLViewer(); v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY); } // projections TEveProjectionManager* mng = new TEveProjectionManager(TEveProjection::kPT_RPhi); scene->AddElement(mng); TEveProjectionAxes* axes = new TEveProjectionAxes(mng); scene->AddElement(axes); gEve->AddToListTree(axes, kTRUE); gEve->AddToListTree(mng, kTRUE); mng->ImportElements(cmp); gEve->Redraw3D(kTRUE); }
void Scene::generate_boundary_points(const unsigned int nb_points) { if(m_pPolyhedron == NULL) { std::cout << "Load polyhedron first." << std::endl; return; } typedef CGAL::AABB_face_graph_triangle_primitive<Polyhedron> Primitive; typedef CGAL::AABB_traits<Kernel, Primitive> Traits; typedef CGAL::AABB_tree<Traits> Tree; typedef Tree::Object_and_primitive_id Object_and_primitive_id; std::cout << "Construct AABB tree..."; Tree tree(faces(*m_pPolyhedron).first, faces(*m_pPolyhedron).second,*m_pPolyhedron); std::cout << "done." << std::endl; CGAL::Timer timer; timer.start(); std::cout << "Generate boundary points: "; unsigned int nb = 0; unsigned int nb_lines = 0; while(nb < nb_points) { Line line = random_line(tree.bbox()); std::list<Object_and_primitive_id> intersections; tree.all_intersections(line,std::back_inserter(intersections)); nb_lines++; std::list<Object_and_primitive_id>::iterator it; for(it = intersections.begin(); it != intersections.end(); it++) { Object_and_primitive_id op = *it; CGAL::Object object = op.first; Point point; if(CGAL::assign(point,object)) { m_points.push_back(point); nb++; } } } std::cout << nb_lines << " line queries, " << timer.time() << " s." << std::endl; changed(); }
int main() { FILE *file_frasi = fopen(FRASI, "r"); FILE *file_sog = fopen(SOGGETTI, "r"); FILE *file_agg = fopen(AGGETTIVI, "r"); char *frase_random = random_line(file_frasi); char *sog_random = random_line(file_sog); char *agg_random = random_line(file_agg); char buffer[ calc_new_length(frase_random, "SOG", sog_random) ]; char buffer_def[ calc_new_length(frase_random, "AGG", agg_random) ]; substitute(frase_random, "SOG", sog_random, buffer); substitute(buffer, "AGG", agg_random, buffer_def); if (islower(buffer_def[0])) buffer_def[0] = toupper(buffer_def[0]); puts(buffer_def); free(frase_random); free(sog_random); free(agg_random); return 0; }
void Scene::benchmark_intersections(const double duration) { if(m_pPolyhedron == NULL) { std::cout << "Load polyhedron first." << std::endl; return; } // constructs tree std::cout << "Construct AABB tree..."; CGAL::Timer timer; timer.start(); Facet_tree tree(m_pPolyhedron->facets_begin(),m_pPolyhedron->facets_end()); std::cout << "done (" << timer.time() << " s)" << std::endl; // generates random queries const int nb_queries = 1000000; std::cout << "Generates random queries..."; std::vector<Ray> rays; std::vector<Line> lines; std::vector<Plane> planes; std::vector<Segment> segments; timer.start(); srand(0); int i = 0; for(i=0; i<nb_queries; i++) { rays.push_back(random_ray(tree.bbox())); lines.push_back(random_line(tree.bbox())); planes.push_back(random_plane(tree.bbox())); segments.push_back(random_segment(tree.bbox())); } std::cout << "done (" << timer.time() << " s)" << std::endl; // bench for all functions and query types bench_intersections(tree,duration,DO_INTERSECT,"do_intersect()",rays,lines,planes,segments,nb_queries); bench_intersections(tree,duration,ANY_INTERSECTED_PRIMITIVE,"any_intersected_primitive()",rays,lines,planes,segments,nb_queries); bench_intersections(tree,duration,ANY_INTERSECTION,"any_intersection()",rays,lines,planes,segments,nb_queries); bench_intersections(tree,duration,NB_INTERSECTIONS,"number_of_intersected_primitives()",rays,lines,planes,segments,nb_queries); bench_intersections(tree,duration,ALL_INTERSECTED_PRIMITIVES,"all_intersected_primitives()",rays,lines,planes,segments,nb_queries); bench_intersections(tree,duration,ALL_INTERSECTIONS,"all_intersections()",rays,lines,planes,segments,nb_queries); }