Files
EgtGeomKernel/CDBoxPolyhedron.cpp
T
Dario Sassi 001a767bcf 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).
2016-10-06 10:26:21 +00:00

45 lines
1.4 KiB
C++

//----------------------------------------------------------------------------
// 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 ;
}