bool Various_Tools_Component::subdivide_catmull(PolyhedronPtr pMesh) { Polyhedron_subdivision<Polyhedron>::CatmullClark_subdivision(*pMesh,1); pMesh->compute_normals(); pMesh->compute_type(); return true; }
bool Various_Tools_Component::subdivide_loop(PolyhedronPtr pMesh) { Polyhedron_subdivision<Polyhedron>::Loop_subdivision(*pMesh,1); pMesh->compute_normals(); pMesh->compute_type(); return true; }
bool Various_Tools_Component::subdivide_sqrt3Twice(PolyhedronPtr pMesh) { CSubdivider_sqrt3<Polyhedron,Enriched_kernel> subdivider; subdivider.subdivide(*pMesh,2); // two iterations pMesh->compute_normals(); pMesh->compute_type(); return true; }
void Implicit_Surface_Meshing_Component::BuildPolyhedron(const C2t3& c2t3,PolyhedronPtr pMesh) { Polyhedron_C2t3_Importer <Polyhedron::HalfedgeDS> builder (c2t3); pMesh->delegate(builder);//build the polyhedron //compute these properties in order to display the polyhedron in Mepp pMesh->compute_bounding_box(); pMesh->compute_normals(); pMesh->compute_type(); (void)pMesh->calc_nb_components(); (void)pMesh->calc_nb_boundaries(); }
void Various_Processing_Component::Subdivision (PolyhedronPtr pMesh, Subdivision_type subdivisionType, int depth) { if (subdivisionType==CATMULLCLARK) SubdivisionCatmullClark(pMesh, depth); else if (subdivisionType==LOOP) SubdivisionLoop(pMesh, depth); else if (subdivisionType==DOOSABIN) SubdivisionDooSabin(pMesh, depth); else if (subdivisionType==SQRT3) SubdivisionSqrt3(pMesh, depth); else if (subdivisionType==MIDPOINT) SubdivisionMidpoint(pMesh, depth); // after connectivity modification of the mesh, we need to update the related internal properties such as "m_pure_quad" or "m_pure_triangle" // other updates can be necessary depending on application pMesh->compute_type(); pMesh->compute_normals(); }