Subdivide a feature curve by splitting it at 0-features. 
Some false strong edges may be filtered out during this step. 
  416   list< Feature_1::const_iterator>  divs;
 
  419   bool isloop = (src==trg);
 
  422   bool isdangling = !isloop && 
 
  426   float cos_min_fa_before=1, cos_min_fa_after=1;
 
  427   Feature_1::const_iterator f1end = f1.end(), hfirst = f1end, hlast=f1end;
 
  429   for (Feature_1::const_iterator hprev=f1.begin(),hi=++f1.begin(),hnext=hi;
 
  430        hi!=f1end; hprev=hi,hi=hnext) {
 
  442     else if ( isdangling) {
 
  448       if ( hfirst == f1end && dpre < cos_min_fa_before)
 
  449         cos_min_fa_before = dpre;
 
  453         if ( hfirst == f1end) hfirst = hi;
 
  454         hlast = hi; cos_min_fa_after = 1.;
 
  457       if ( d < cos_min_fa_before) cos_min_fa_after = 
d;
 
  461   if ( isdangling && divs.empty() ) {
 
  466     if ( hlast!=f1end && hlast!=hfirst && cos_min_fa_after>
_cos_weakend &&
 
  473     Feature_1::const_iterator hi = f1.begin();
 
  482     divs.push_back( f1end);
 
  487     subcur.push_back( f1);
 
  489     subcur.push_back( Feature_1( f1.begin(),divs.front()));
 
  490     list< Feature_1::const_iterator>::const_iterator dit=divs.begin();
 
  491     for ( list< Feature_1::const_iterator>::const_iterator 
 
  492             dinext=dit; ++dinext != divs.end(); dit=dinext)
 
  493       subcur.push_back( Feature_1( *dit, *dinext));
 
  496       Feature_1 &newf=subcur.front();
 
  497       newf.insert( newf.begin(), *dit, f1end);
 
  502   for (Feature_list_1::iterator sit=subcur.begin();sit!=subcur.end();++sit) {
 
  504       for ( Feature_1::const_iterator 
i=sit->begin(); 
i!=sit->end(); ++
i) {
 
  513       for ( Feature_1::const_iterator 
i=sit->begin(); 
i!=sit->end(); ++
i)
 
  520       new_flist.push_back( Feature_1()); new_flist.back().swap(*sit);
 
Vertex * get_origin(Halfedge *h) const 
float cos_edge_angle(const Halfedge *h1, const Halfedge *h2)
Compute the cosine of the edge angle at a vertex between two incident feature edges. 
void set_on_feature(Vertex *v) const 
Halfedge * get_opposite(Halfedge *h) const 
RFC_Pane_overlay * get_pane(Vertex *v) const 
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
bool check_false_strong_1(Feature_1 &)
Determine whether a curve is false strong. 
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
std::list< Feature_1 > Feature_list_1
float cos_face_angle(Halfedge *h, Halfedge *hopp)
Compute the cosine of the face angle (dihedral angle) at an edge. 
bool is_rstrong_ea(const Feature_1 &f1, Feature_1::const_iterator hprev, Feature_1::const_iterator hnext, float cos_ea, bool isloop)
Determine whether a vertex is relatively strong in edge angle within a give feature. 
void unset_strong_edge(Halfedge *h)
bool is_feature_0(const Vertex *v) const 
static HDS_accessor< Tag_true > acc
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
void set_feature_0(Vertex *v) const 
Halfedge_overlay Halfedge
Vertex * get_destination(Halfedge *h) const 
std::map< Vertex *, int > _f0_ranks