gcc compatibility (templates mostly)
bbox -> this->bbox More consistent use of Box3x and such.
This commit is contained in:
parent
52c3f0e4d4
commit
88614c2f37
|
@ -24,6 +24,10 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.16 2006/01/23 15:26:31 ponchio
|
||||||
|
P1 --> HASH_P1
|
||||||
|
Old definition was conflicting with functions in segment.h
|
||||||
|
|
||||||
Revision 1.15 2005/11/23 15:55:35 pietroni
|
Revision 1.15 2005/11/23 15:55:35 pietroni
|
||||||
1 warning corrected
|
1 warning corrected
|
||||||
|
|
||||||
|
@ -90,11 +94,16 @@ added vcg header
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <hash_map>
|
#ifndef __MINGW32__
|
||||||
#define STDEXT stdext
|
#include <hash_map>
|
||||||
|
#define STDEXT stdext
|
||||||
|
#else
|
||||||
|
#include <ext/hash_map>
|
||||||
|
#define STDEXT __gnu_cxx
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#include <ext/hash_map>
|
#include <ext/hash_map>
|
||||||
#define STDEXT __gnu_cxx
|
#define STDEXT __gnu_cxx
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,8 +125,10 @@ namespace vcg{
|
||||||
typedef ObjType* ObjPtr;
|
typedef ObjType* ObjPtr;
|
||||||
typedef typename ObjType::ScalarType ScalarType;
|
typedef typename ObjType::ScalarType ScalarType;
|
||||||
typedef Point3<ScalarType> CoordType;
|
typedef Point3<ScalarType> CoordType;
|
||||||
|
typedef typename BasicGrid<OBJTYPE, FLT>::Box3x Box3x;
|
||||||
|
|
||||||
typedef typename SpatialHashTable<ObjType,FLT> SpatialHashType;
|
// typedef typename SpatialHashTable<ObjType,FLT> SpatialHashType;
|
||||||
|
typedef SpatialHashTable SpatialHashType;
|
||||||
//typedef typename SpatialHashTable<ObjType,FLT> GridType;
|
//typedef typename SpatialHashTable<ObjType,FLT> GridType;
|
||||||
|
|
||||||
//type of container of pointer to object in a Cell
|
//type of container of pointer to object in a Cell
|
||||||
|
@ -127,8 +138,8 @@ namespace vcg{
|
||||||
public:
|
public:
|
||||||
EntryType(ObjType* sim,const int &_tempMark)
|
EntryType(ObjType* sim,const int &_tempMark)
|
||||||
{
|
{
|
||||||
first=sim;
|
this->first=sim;
|
||||||
second=_tempMark;
|
this->second=_tempMark;
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjType& operator *(){return (*this->first);}
|
ObjType& operator *(){return (*this->first);}
|
||||||
|
@ -136,7 +147,7 @@ namespace vcg{
|
||||||
|
|
||||||
typedef typename std::vector<EntryType> CellContainerType;
|
typedef typename std::vector<EntryType> CellContainerType;
|
||||||
typedef typename CellContainerType::iterator IteMap;
|
typedef typename CellContainerType::iterator IteMap;
|
||||||
typedef typename EntryType* CellIterator;
|
typedef EntryType* CellIterator;
|
||||||
|
|
||||||
//This Class Identify the cell
|
//This Class Identify the cell
|
||||||
struct Cell
|
struct Cell
|
||||||
|
@ -300,25 +311,31 @@ namespace vcg{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Insert a mesh in the grid.SetBBox() function must be called before
|
/// Insert a mesh in the grid.
|
||||||
template <class OBJITER>
|
template <class OBJITER>
|
||||||
void Set(const OBJITER & _oBegin, const OBJITER & _oEnd,const Box3x &_bbox=Box3x() )
|
void Set(const OBJITER & _oBegin, const OBJITER & _oEnd,const Box3x &_bbox=Box3x() )
|
||||||
{
|
{
|
||||||
|
|
||||||
OBJITER i;
|
OBJITER i;
|
||||||
Box3<FLT> b;
|
Box3x b;
|
||||||
|
Box3x &bbox = this->bbox;
|
||||||
|
CoordType &dim = this->dim;
|
||||||
|
Point3i &siz = this->siz;
|
||||||
|
CoordType &voxel = this->voxel;
|
||||||
|
|
||||||
int _size=std::distance<OBJITER>(_oBegin,_oEnd);
|
int _size=std::distance<OBJITER>(_oBegin,_oEnd);
|
||||||
if(!_bbox.IsNull()) bbox=_bbox;
|
if(!_bbox.IsNull()) this->bbox=_bbox;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(i = _oBegin; i!= _oEnd; ++i)
|
for(i = _oBegin; i!= _oEnd; ++i)
|
||||||
{
|
{
|
||||||
(*i).GetBBox(b);
|
(*i).GetBBox(b);
|
||||||
bbox.Add(b);
|
this->bbox.Add(b);
|
||||||
}
|
}
|
||||||
///inflate the bb calculated
|
///inflate the bb calculated
|
||||||
ScalarType infl=bbox.Diag()/_size;
|
ScalarType infl=bbox.Diag()/_size;
|
||||||
bbox.min-=vcg::Point3d(infl,infl,infl);
|
bbox.min -= CoordType(infl,infl,infl);
|
||||||
bbox.max+=vcg::Point3d(infl,infl,infl);
|
bbox.max += CoordType(infl,infl,infl);
|
||||||
}
|
}
|
||||||
|
|
||||||
dim = bbox.max - bbox.min;
|
dim = bbox.max - bbox.min;
|
||||||
|
@ -425,7 +442,7 @@ namespace vcg{
|
||||||
|
|
||||||
template <class OBJMARKER, class OBJPTRCONTAINER>
|
template <class OBJMARKER, class OBJPTRCONTAINER>
|
||||||
unsigned int GetInBox(OBJMARKER & _marker,
|
unsigned int GetInBox(OBJMARKER & _marker,
|
||||||
const vcg::Box3<typename ScalarType> _bbox,
|
const Box3x _bbox,
|
||||||
OBJPTRCONTAINER & _objectPtrs)
|
OBJPTRCONTAINER & _objectPtrs)
|
||||||
{
|
{
|
||||||
return(vcg::GridGetInBox<SpatialHashType,OBJMARKER,OBJPTRCONTAINER>
|
return(vcg::GridGetInBox<SpatialHashType,OBJMARKER,OBJPTRCONTAINER>
|
||||||
|
@ -450,13 +467,23 @@ namespace vcg{
|
||||||
class DynamicSpatialHashTable: public SpatialHashTable<ContainerType,FLT>
|
class DynamicSpatialHashTable: public SpatialHashTable<ContainerType,FLT>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
typedef typename SpatialHashTable<ContainerType,FLT>::CoordType CoordType;
|
||||||
|
typedef typename SpatialHashTable<ContainerType,FLT>::ObjType ObjType;
|
||||||
|
typedef typename SpatialHashTable<ContainerType,FLT>::ObjPtr ObjPtr;
|
||||||
|
typedef typename SpatialHashTable<ContainerType,FLT>::Box3x Box3x;
|
||||||
|
typedef typename SpatialHashTable<ContainerType,FLT>::CellIterator CellIterator;
|
||||||
|
|
||||||
void _UpdateHMark(ObjType* s){s->HMark()=tempMark;}
|
void _UpdateHMark(ObjType* s){ s->HMark() = this->tempMark;}
|
||||||
|
|
||||||
/// create an empty spatial hash table
|
/// create an empty spatial hash table
|
||||||
void InitEmpty(const vcg::Box3<typename ScalarType> &_bbox,vcg::Point3i grid_size)
|
void InitEmpty(const Box3x &_bbox, vcg::Point3i grid_size)
|
||||||
{
|
{
|
||||||
Box3<FLT> b;
|
Box3x b;
|
||||||
|
Box3x &bbox = this->bbox;
|
||||||
|
CoordType &dim = this->dim;
|
||||||
|
Point3i &siz = this->size;
|
||||||
|
CoordType &voxel = this->voxel;
|
||||||
|
|
||||||
assert(!_bbox.IsNull());
|
assert(!_bbox.IsNull());
|
||||||
bbox=_bbox;
|
bbox=_bbox;
|
||||||
dim = bbox.max - bbox.min;
|
dim = bbox.max - bbox.min;
|
||||||
|
|
Loading…
Reference in New Issue