EgtExecutor :

- spostato il filtro delle intersezioni line-SurfBz in GeomKernel.
This commit is contained in:
Daniele Bariletti
2024-02-28 10:31:54 +01:00
parent d1cb3d7de7
commit 89e8b02316
+2 -58
View File
@@ -250,64 +250,8 @@ MyLineSurfBzInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRef
if ( ! IntersLineSurfBz( ptPL, vtDirL, dLen, pSbz, vInfo, false))
return false ;
//// ciclo sulle intersezioni
//for ( const auto& Info : vInfo) {
// // se intersezione puntuale
// if ( Info.nILTT == ILTT_VERT || Info.nILTT == ILTT_EDGE || Info.nILTT == ILTT_IN) {
// int nFlag = SLT_TOUCH ;
// if ( Info.dCosDN > EPS_ZERO)
// nFlag = SLT_OUT ;
// else if ( Info.dCosDN < -EPS_ZERO)
// nFlag = SLT_IN ;
// vInters.emplace_back( nFlag, Info.dU) ;
// }
// // se altrimenti intersezione con coincidenza
// else if ( Info.nILTT == ILTT_SEGM || Info.nILTT == ILTT_SEGM_ON_EDGE) {
// vInters.emplace_back( SLT_TG_INI, Info.dU) ;
// vInters.emplace_back( SLT_TG_FIN, Info.dU2) ;
// }
//}
//// elimino intersezioni ripetute
//for ( size_t j = 1 ; j < vInters.size() ; ) {
// // intersezione precedente
// size_t i = j - 1 ;
// // se hanno lo stesso parametro
// if ( abs( vInters[i].second - vInters[j].second) < EPS_SMALL) {
// // se sono entrambe entranti o uscenti, elimino la seconda
// if ( ( vInters[i].first == SLT_IN && vInters[j].first == SLT_IN) ||
// ( vInters[i].first == SLT_OUT && vInters[j].first == SLT_OUT)) {
// vInters.erase( vInters.begin() + j) ;
// continue ;
// }
// // se una entrante e l'altra uscente, cambio in touch ed elimino la seconda
// else if ( ( vInters[i].first == SLT_IN && vInters[j].first == SLT_OUT) ||
// ( vInters[i].first == SLT_OUT && vInters[j].first == SLT_IN)) {
// vInters[i].first = SLT_TOUCH ;
// vInters.erase( vInters.begin() + j) ;
// continue ;
// }
// // se una puntuale e l'altra inizio di coincidenza, elimino la prima
// else if ( ( vInters[i].first == SLT_IN || vInters[i].first == SLT_OUT || vInters[i].first == SLT_TOUCH) && vInters[j].first == SLT_TG_INI) {
// vInters.erase( vInters.begin() + i) ;
// continue ;
// }
// // se una fine di coincidenza e l'altra puntuale, elimino la seconda
// else if ( vInters[i].first == SLT_TG_FIN && ( vInters[j].first == SLT_IN || vInters[j].first == SLT_OUT || vInters[j].first == SLT_TOUCH)) {
// vInters.erase( vInters.begin() + j) ;
// continue ;
// }
// // se una fine di coincidenza e l'altra inizio di coincidenza, elimino entrambe
// else if ( i > 0 && vInters[i].first == SLT_TG_FIN && vInters[j].first == SLT_TG_INI) {
// vInters.erase( vInters.begin() + j) ;
// vInters.erase( vInters.begin() + i) ;
// -- j ;
// continue ;
// }
// }
// // passo alla successiva
// ++ j ;
//}
// filtro le intersezioni
FilterLineSurfBzInters( vInfo, vInters) ;
return true ;
}