IGL_INLINE void igl::in_element( const Eigen::PlainObjectBase<DerivedV> & V, const Eigen::MatrixXi & Ele, const Eigen::PlainObjectBase<DerivedQ> & Q, const AABB<DerivedV,DIM> & aabb, Eigen::VectorXi & I) { using namespace std; using namespace Eigen; const int Qr = Q.rows(); I.setConstant(Qr,1,-1); #pragma omp parallel for if (Qr>10000) for(int e = 0;e<Qr;e++) { // find all const auto R = aabb.find(V,Ele,Q.row(e),true); if(!R.empty()) { I(e) = R[0]; } } }
IGL_INLINE void igl::in_element( const Eigen::MatrixXd & V, const Eigen::MatrixXi & Ele, const Eigen::MatrixXd & Q, const InElementAABB & aabb, Eigen::VectorXi & I) { using namespace std; using namespace Eigen; const int Qr = Q.rows(); I.setConstant(Qr,1,-1); #pragma omp parallel for for(int e = 0;e<Qr;e++) { // find all const auto R = aabb.find(V,Ele,Q.row(e),true); if(!R.empty()) { I(e) = R[0]; } } }
inline void cut(Eigen::PlainObjectBase<DerivedO> &Handle_Seams) { F_visited.setConstant(F.rows(),0); Handle_Seams.setConstant(F.rows(),3,1); int index=0; for (unsigned f = 0; f<F.rows(); f++) { if (!F_visited(f)) { index++; FloodFill(f, Handle_Seams); } } Retract(Handle_Seams); for (unsigned int f=0;f<F.rows();f++) for (int j=0;j<3;j++) if (IsRotSeam(f,j)) Handle_Seams(f,j)=true; }