use calc_face_normal if no normal property is available

This commit is contained in:
Max Lyon
2022-05-25 13:55:52 +02:00
parent 187d670539
commit 7a5aa1835b

View File

@@ -401,8 +401,8 @@ calc_halfedge_normal(HalfedgeHandle _heh, const double _feature_angle) const
} }
Normal n(0,0,0); Normal n(0,0,0);
for(unsigned int i=0; i<fhs.size(); ++i) for (unsigned int i = 0; i < fhs.size(); ++i)
n += Kernel::normal(fhs[i]); n += Kernel::has_face_normals() ? Kernel::normal(fhs[i]) : calc_face_normal(fhs[i]);
return normalize(n); return normalize(n);
} }
@@ -444,8 +444,8 @@ is_estimated_feature_edge(HalfedgeHandle _heh, const double _feature_angle) cons
FaceHandle fh0 = Kernel::face_handle(_heh); FaceHandle fh0 = Kernel::face_handle(_heh);
FaceHandle fh1 = Kernel::face_handle(Kernel::opposite_halfedge_handle(_heh)); FaceHandle fh1 = Kernel::face_handle(Kernel::opposite_halfedge_handle(_heh));
Normal fn0 = Kernel::normal(fh0); Normal fn0 = Kernel::has_face_normals() ? Kernel::normal(fh0) : calc_face_normal(fh0);
Normal fn1 = Kernel::normal(fh1); Normal fn1 = Kernel::has_face_normals() ? Kernel::normal(fh1) : calc_face_normal(fh1);
// dihedral angle above angle threshold // dihedral angle above angle threshold
return ( dot(fn0,fn1) < cos(_feature_angle) ); return ( dot(fn0,fn1) < cos(_feature_angle) );