EgtGeomKernel 1.8h3 :

- migliorie e correzioni su Zmap
- aggiunta a PointGrid3d nuova FindNearest
- migliorie a TriMesh.
This commit is contained in:
Dario Sassi
2017-08-31 07:43:41 +00:00
parent 9e400bee15
commit c8a38f5aae
6 changed files with 251 additions and 196 deletions
+30
View File
@@ -354,6 +354,36 @@ PointGrid3d::FindNearest( const Point3d& ptTest, INTVECTOR& vnIds)
}
}
//----------------------------------------------------------------------------
bool
PointGrid3d::FindNearest( const Point3d& ptTest, double dTol, int& nId)
{
// determino il range di celle sui tre assi
IBox iBox ;
if ( ! Get3dRangeNbr( ptTest, dTol, iBox))
return false ;
// ciclo su tutte le celle del range
bool bFound = false ;
double dMinSqDist = dTol * dTol ;
for ( int i = iBox.nXmin ; i <= iBox.nXmax ; ++ i) {
for ( int j = iBox.nYmin ; j <= iBox.nYmax ; ++ j) {
for ( int k = iBox.nZmin ; k <= iBox.nZmax ; ++ k) {
IPNTI_UMMAP_CRANGE MMrange = m_MMap.equal_range( PointHash( i, j, k)) ;
for ( ; MMrange.first != MMrange.second ; ++ MMrange.first) {
double dSqDist = SqDist( (*MMrange.first).second.first, ptTest) ;
if ( dSqDist < dMinSqDist) {
bFound = true ;
dMinSqDist = dSqDist ;
nId = (*MMrange.first).second.second ;
}
}
}
}
}
return bFound ;
}
//----------------------------------------------------------------------------
bool
PointGrid3d::First( int& nId)