added IPToP and IBoxToBox functions, modified BoxToIBox function in order to use PToIP function
This commit is contained in:
parent
a96663b39e
commit
7bc4ef59fd
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.3 2005/07/28 06:11:12 cignoni
|
||||||
|
corrected error in GridP (did not compile)
|
||||||
|
|
||||||
Revision 1.2 2005/07/01 11:33:36 cignoni
|
Revision 1.2 2005/07/01 11:33:36 cignoni
|
||||||
Added a class BasicGrid with some utility function that are scattered among similar classes
|
Added a class BasicGrid with some utility function that are scattered among similar classes
|
||||||
|
|
||||||
|
@ -44,8 +47,11 @@ Removed BestDim function from the grid_static_ptr class and moved to a indipende
|
||||||
|
|
||||||
template <class ScalarType>
|
template <class ScalarType>
|
||||||
class BasicGrid {
|
class BasicGrid {
|
||||||
|
|
||||||
|
typedef typename Box3<ScalarType> Box3x;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Box3<ScalarType> bbox;
|
Box3x bbox;
|
||||||
/// Dimensione spaziale (lunghezza lati) del bbox
|
/// Dimensione spaziale (lunghezza lati) del bbox
|
||||||
Point3<ScalarType> dim;
|
Point3<ScalarType> dim;
|
||||||
/// Dimensioni griglia in celle
|
/// Dimensioni griglia in celle
|
||||||
|
@ -63,6 +69,7 @@ Removed BestDim function from the grid_static_ptr class and moved to a indipende
|
||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Dato un punto 3d ritorna l'indice del box corrispondente
|
/// Dato un punto 3d ritorna l'indice del box corrispondente
|
||||||
inline void PToIP(const Point3<ScalarType> & p, Point3i &pi ) const
|
inline void PToIP(const Point3<ScalarType> & p, Point3i &pi ) const
|
||||||
{
|
{
|
||||||
|
@ -72,30 +79,29 @@ Removed BestDim function from the grid_static_ptr class and moved to a indipende
|
||||||
pi[2] = int( t[2]/voxel[2] );
|
pi[2] = int( t[2]/voxel[2] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Dato un box reale ritorna gli indici dei voxel compresi dentro un ibox
|
/// Given a voxel index return the lower corner of the voxel
|
||||||
void BoxToIBox( const Box3d & b, Box3i & ib ) const
|
inline void IPToP(const Point3i & pi, Point3<ScalarType> &p ) const
|
||||||
{
|
{
|
||||||
Point3d t;
|
p[0] = ((ScalarType)pi[0])*voxel[0];
|
||||||
|
p[1] = ((ScalarType)pi[1])*voxel[1];
|
||||||
|
p[2] = ((ScalarType)pi[2])*voxel[2];
|
||||||
|
p +=bbox.min;
|
||||||
|
}
|
||||||
|
|
||||||
t = (b.min - bbox.min); // Traslo il box b;
|
/// Dato un box reale ritorna gli indici dei voxel compresi dentro un ibox
|
||||||
t[0] /= voxel[0];
|
void BoxToIBox( const Box3x & b, Box3i & ib ) const
|
||||||
t[1] /= voxel[1];
|
{
|
||||||
t[2] /= voxel[2];
|
PToIP(b.min,ib.min);
|
||||||
ib.min[0] = int( t[0] ); // Trasformazione in intero
|
PToIP(b.max,ib.max);
|
||||||
ib.min[1] = int( t[1] );
|
|
||||||
ib.min[2] = int( t[2] );
|
|
||||||
assert(ib.min[0]>=0 && ib.min[1]>=0 && ib.min[2]>=0);
|
|
||||||
t = (b.max - bbox.min); // Taslo il box b;
|
|
||||||
t[0] /= voxel[0];
|
|
||||||
t[1] /= voxel[1];
|
|
||||||
t[2] /= voxel[2];
|
|
||||||
ib.max[0] = int( ceil(t[0]) ); // Trasformazione in intero
|
|
||||||
ib.max[1] = int( ceil(t[1]) );
|
|
||||||
ib.max[2] = int( ceil(t[2]) );
|
|
||||||
assert(ib.max[0]>=0 && ib.max[1]>=0 && ib.max[2]>=0);
|
assert(ib.max[0]>=0 && ib.max[1]>=0 && ib.max[2]>=0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Dato un box in voxel ritorna gli estremi del box reale
|
||||||
|
void IBoxToBox( const Box3i & ib, Box3x & b ) const
|
||||||
|
{
|
||||||
|
IPtoP(ib.min,b.min);
|
||||||
|
IPtoP(ib.max,b.max);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue