EgtGeomKernel 1.6v1 :
- aggiunta verifica collisione tra Box e Triangolo e tra Box e TriMesh - cambiato nome a movimento con verifica collisione tra Regioni semplici (si ignorano eventuali buchi).
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2016-2016
|
||||
//----------------------------------------------------------------------------
|
||||
// File : CDBoxPolyhedron.cpp Data : 05.10.16 Versione : 1.6v1
|
||||
// Contenuto : Implementazione della verifica di collisione tra
|
||||
// BoundingBox e Polyhedron.
|
||||
//
|
||||
//
|
||||
// Modifiche : 05.10.16 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "/EgtDev/Include/EGkCDBoxTria.h"
|
||||
#include "/EgtDev/Include/EGkCDBoxPolyhedron.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
CDBoxPolyhedron( const BBox3d& b3Box, const ISurfTriMesh& Stm)
|
||||
{
|
||||
// verifico che la trimesh sia effettivamente un poliedro
|
||||
if ( ! Stm.IsClosed())
|
||||
return false ;
|
||||
// recupero BBox del poliedro
|
||||
BBox3d b3Poly ;
|
||||
if ( ! Stm.GetLocalBBox( b3Poly))
|
||||
return false ;
|
||||
// confronto i due Box
|
||||
if ( ! b3Box.Overlaps( b3Poly))
|
||||
return false ;
|
||||
// confronto il Box con tutti i triangoli
|
||||
Triangle3d Tria ;
|
||||
int nId = Stm.GetFirstTriangle( Tria) ;
|
||||
while ( nId != SVT_NULL) {
|
||||
if ( CDBoxTria( b3Box, Tria))
|
||||
return true ;
|
||||
nId = Stm.GetNextTriangle( nId, Tria) ;
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
Reference in New Issue
Block a user