void Scene_c3t3_item::draw_triangle(const Kernel::Point_3& pa, const Kernel::Point_3& pb, const Kernel::Point_3& pc, bool /* is_cut */) const { #undef darker Kernel::Vector_3 n = cross_product(pb - pa, pc - pa); n = n / CGAL::sqrt(n*n); for (int i = 0; i<3; i++) { normals.push_back(n.x()); normals.push_back(n.y()); normals.push_back(n.z()); } positions_poly.push_back(pa.x()); positions_poly.push_back(pa.y()); positions_poly.push_back(pa.z()); positions_poly.push_back(pb.x()); positions_poly.push_back(pb.y()); positions_poly.push_back(pb.z()); positions_poly.push_back(pc.x()); positions_poly.push_back(pc.y()); positions_poly.push_back(pc.z()); }
void addTriangle(Kernel::Point_3 pa, Kernel::Point_3 pb, Kernel::Point_3 pc, CGAL::Color color) { Kernel::Vector_3 n = cross_product(pb - pa, pc - pa); n = n / CGAL::sqrt(n*n); for (int i = 0; i<3; i++) { normals->push_back(n.x()); normals->push_back(n.y()); normals->push_back(n.z()); } vertices->push_back(pa.x()); vertices->push_back(pa.y()); vertices->push_back(pa.z()); vertices->push_back(pb.x()); vertices->push_back(pb.y()); vertices->push_back(pb.z()); vertices->push_back(pc.x()); vertices->push_back(pc.y()); vertices->push_back(pc.z()); edges->push_back(pa.x()); edges->push_back(pa.y()); edges->push_back(pa.z()); edges->push_back(pb.x()); edges->push_back(pb.y()); edges->push_back(pb.z()); edges->push_back(pb.x()); edges->push_back(pb.y()); edges->push_back(pb.z()); edges->push_back(pc.x()); edges->push_back(pc.y()); edges->push_back(pc.z()); edges->push_back(pc.x()); edges->push_back(pc.y()); edges->push_back(pc.z()); edges->push_back(pa.x()); edges->push_back(pa.y()); edges->push_back(pa.z()); for(int i=0; i<3; i++) { colors->push_back((float)color.red()/255); colors->push_back((float)color.green()/255); colors->push_back((float)color.blue()/255); } }
void operator()( Kernel::Point_3& storage ) const { storage = Kernel::Point_3( _roundFT( storage.x() ), _roundFT( storage.y() ), _roundFT( storage.z() ) ); }
void SketchSample::compute_mesh_position() { typedef CGAL::Cartesian<double> Kernel; Kernel::Iso_cuboid_3 box = CGAL::bounding_box(p_mesh->points_begin(), p_mesh->points_end()); Kernel::Point_3 center = CGAL::midpoint(box.min(), box.max()); Kernel::Vector_3 diameter = box.min() - box.max(); mesh_center_x = center.x(); mesh_center_y = center.y(); mesh_center_z = center.z(); mesh_radius = CGAL::sqrt( diameter * diameter )/2; }
void Scene_c3t3_item::draw_triangle_edges(const Kernel::Point_3& pa, const Kernel::Point_3& pb, const Kernel::Point_3& pc)const { #undef darker Kernel::Vector_3 n = cross_product(pb - pa, pc - pa); n = n / CGAL::sqrt(n*n); positions_lines.push_back(pa.x()); positions_lines.push_back(pa.y()); positions_lines.push_back(pa.z()); positions_lines.push_back(pb.x()); positions_lines.push_back(pb.y()); positions_lines.push_back(pb.z()); positions_lines.push_back(pb.x()); positions_lines.push_back(pb.y()); positions_lines.push_back(pb.z()); positions_lines.push_back(pc.x()); positions_lines.push_back(pc.y()); positions_lines.push_back(pc.z()); positions_lines.push_back(pc.x()); positions_lines.push_back(pc.y()); positions_lines.push_back(pc.z()); positions_lines.push_back(pa.x()); positions_lines.push_back(pa.y()); positions_lines.push_back(pa.z()); }
void Scene_c3t3_item::draw_triangle_edges(const Kernel::Point_3& pa, const Kernel::Point_3& pb, const Kernel::Point_3& pc)const { #undef darker positions_lines.push_back(pa.x()); positions_lines.push_back(pa.y()); positions_lines.push_back(pa.z()); positions_lines.push_back(pb.x()); positions_lines.push_back(pb.y()); positions_lines.push_back(pb.z()); positions_lines.push_back(pb.x()); positions_lines.push_back(pb.y()); positions_lines.push_back(pb.z()); positions_lines.push_back(pc.x()); positions_lines.push_back(pc.y()); positions_lines.push_back(pc.z()); positions_lines.push_back(pc.x()); positions_lines.push_back(pc.y()); positions_lines.push_back(pc.z()); positions_lines.push_back(pa.x()); positions_lines.push_back(pa.y()); positions_lines.push_back(pa.z()); }
Kernel::Point_2 operator()( const Kernel::Point_3& storage ) const { return Kernel::Point_2( storage.x(), storage.y() ); }
Kernel::FT operator()( const Kernel::Point_3& storage ) const { return storage.x(); }
// a helper method for running different iterators void running_iterators( Polyhedron& P) { if ( P.size_of_facets() == 0) return; std::size_t nv = P.size_of_vertices(); std::cout << "The number of vertices in the Polyhedron: " << nv << std::endl; std::cout << "The number of facets in the Polyhedron: " << P.size_of_facets() << std::endl; std::cout << "The number of half edges in the Polyhedron: " << P.size_of_halfedges() << std::endl; std::cout << std:: endl; Polyhedron::Vertex_iterator last_v = P.vertices_end(); -- last_v; // the last of the old vertices Polyhedron::Edge_iterator last_e = P.edges_end(); -- last_e; // the last of the old edges Polyhedron::Facet_iterator last_f = P.facets_end(); -- last_f; // the last of the old facets int k = 0; Polyhedron::Facet_iterator f = P.facets_begin(); do { std::cout << "Printing a facet index: " << k++ << std::endl; f->halfedge(); } while ( f++ != last_f); std::cout << std::endl; // ------------------------------------------------- // traverse the vertices // ------------------------------------------------- std::cout << "Printing the vertex indices: " << std::endl; int n=0; for (Polyhedron::Vertex_iterator vi = P.vertices_begin(); vi != P.vertices_end(); ++vi) { Kernel::Point_3 p; p = vi->point(); std::cout << "Vertex index: " << n++ << std::endl; std::cout << "p.x() = " << p.x() << std::endl; std::cout << "p.y() = " << p.y() << std::endl; std::cout << "p.z() = " << p.z() << std::endl; } std::cout << std::endl; // ------------------------------------------------- // traverse the edges // ------------------------------------------------- std::cout << "Iterating over the edges.... " << std::endl; n=0; for (Polyhedron::Edge_iterator ei = P.edges_begin(); ei != P.edges_end(); ++ei) { ei->next(); Kernel::Point_3 p; p = ei->vertex()->point(); std::cout << "For edge index: " << n++ << std::endl; std::cout << "p.x() = " << p.x() << std::endl; std::cout << "p.y() = " << p.y() << std::endl; std::cout << "p.z() = " << p.z() << std::endl; } std::cout << std::endl; // ----------------------------------------------- // Do something else with the edge iterators // ----------------------------------------------- Polyhedron::Edge_iterator e = P.edges_begin(); ++ last_e; // make it the past-the-end position again while ( e != last_e) { Polyhedron::Halfedge_handle h = e; ++e; }; CGAL_postcondition( P.is_valid()); }