diff --git a/DDCAD/include/DDCAD/Utilities.h b/DDCAD/include/DDCAD/Utilities.h index 1b0a86f0839ebc275961a2344fc7357421f713a3..a7e8f511d5a86ee3362e6798002be038f2f1368e 100644 --- a/DDCAD/include/DDCAD/Utilities.h +++ b/DDCAD/include/DDCAD/Utilities.h @@ -54,25 +54,6 @@ namespace dd4hep { } // Determine if the facet is degenerated by calculating its determinant inline bool facetIsDegenerated(std::vector<ROOT::Geom::Vertex_t> const& vertices){ -#if 0 - const ROOT::Geom::Vertex_t& v1 = vertices[0]; - const ROOT::Geom::Vertex_t& v2 = vertices[1]; - const ROOT::Geom::Vertex_t& v3 = vertices[2]; - constexpr double epsilon = std::numeric_limits<double>::epsilon(); - // v1.x v2.x v3.x v1.x v2.x - // - // v1.y v2.y v3.y v1.y v2.y - // - // v1.z v2.z v3.z v1.z v2.z - double det = 0.0 - + v1.x() * v2.y() * v3.z() - + v2.x() * v3.y() * v1.z() - + v3.x() * v1.y() * v2.z() - - v1.z() * v2.y() * v3.x() - - v2.z() * v3.y() * v1.x() - - v3.z() * v1.y() * v2.x(); - return std::fabs(det) < epsilon; -#else using ROOT::Geom::Vertex_t; // Compute normal using non-zero segments constexpr double kTolerance = 1.e-20; @@ -99,7 +80,6 @@ namespace dd4hep { break; } return degenerated; -#endif } } } diff --git a/DDCAD/src/ASSIMPReader.cpp b/DDCAD/src/ASSIMPReader.cpp index 78e9e7f5c7469cdab603488cf6af0d52e824b69f..03b9166f5d0c21b120a4389c60881ca56143cce2 100644 --- a/DDCAD/src/ASSIMPReader.cpp +++ b/DDCAD/src/ASSIMPReader.cpp @@ -117,7 +117,12 @@ ASSIMPReader::readVolumes(const std::string& source, double unit_length) const /// assigns the proper indices to the facet. for(unsigned int i=0; i < mesh->mNumFaces; i++) { const unsigned int* idx = mesh->mFaces[i].mIndices; - bool degenerated = dd4hep::cad::facetIsDegenerated({vertices[idx[0]], vertices[idx[1]], vertices[idx[2]]}); + bool degenerated = false; + if ( mesh->mFaces[i].mNumIndices == 3 ) + degenerated = dd4hep::cad::facetIsDegenerated({vertices[idx[0]], vertices[idx[1]], vertices[idx[2]]}); + else if ( mesh->mFaces[i].mNumIndices == 4 ) + degenerated = dd4hep::cad::facetIsDegenerated({vertices[idx[0]], vertices[idx[1]], vertices[idx[2]], vertices[idx[3]]}); + if ( degenerated ) { printout(DEBUG, "ASSIMPReader", "+++ %s: Drop degenerated facet: %d %d %d", name.c_str(), idx[0], idx[1], idx[2]);