void Bbase::add_edge_memes(CBedge_list& edges) { if (!(_mesh && _mesh == edges.mesh())) { err_msg("Bbase::add_edge_memes: Error: bad mesh"); return; } for (int i=0; i<edges.num(); i++) add_edge_meme((Ledge*)edges[i]); }
inline Bface_list ctrl_faces(CBedge_list& edges) { if (!dynamic_pointer_cast<LMESH>(edges.mesh())) return Bface_list(); Bface_list ret(edges.size()); for (Bedge_list::size_type i=0; i<edges.size(); i++) { Bface* f = ((Ledge*)edges[i])->ctrl_face(); if (f) ret.push_back(f); } return ret.unique_elements().quad_complete_faces(); }
inline double compute_yardstick(CBedge_list& edges, bool debug=false) { double ret = 0.6 * edges.strong_edges().avg_len(); BMESHptr mk = edges.mesh(); BMESHptr m0 = get_top_level(edges.get_faces()).mesh(); int lk = 0; // mesh level of edges int l0 = 0; // mesh level of edges' control region double s = 1; // scaling factor if (mk && m0) { lk = mk->subdiv_level(); l0 = m0->subdiv_level(); s = (1 << (lk - l0)); } err_adv(debug, "lk: %d, l0: %d, scaling: %f", lk, l0, s); return s * ret; }