GEL  2
GEL is a library for Geometry and Linear Algebra
Classes | Typedefs | Enumerations | Functions | Variables
Geometry Namespace Reference

A namespace for utilities related to geometry. More...

Classes

class  AABox
class  AncestorGrid
 Class template is used as abstract ancestor of voxel grids. More...
struct  ISectTri
struct  TriAccel
struct  BBox
class  BoundingINode
class  BoundingLNode
 Leaf node of a bounding box tree. References triangle. More...
class  BoundingNode
 Abstract BOUNDINGNODE node. More...
class  HE
class  BoundingTree
struct  Stack
struct  BSPNode
struct  BSPLeaf
struct  BSPInner
union  FastBSPNode
class  BSPTree
class  Cell
 Class template for a cell in a hierarchical grid. More...
class  DefaultCell
class  GradientFilter
 This class is a filter that computes gradients from a grid. More...
class  _HGridCellFunctor
class  _AssignFun
class  _HGridCellFunctorConst
class  HGrid
 Hierarchical voxel grid. More...
class  IndexedFaceSet
 This class represents the simplest possible triangle mesh data structure. More...
class  KDTree
 A classic K-D tree. More...
struct  Material
class  TriMeshObjLoader
class  OBox
class  ImplicitFunction
 Implicit function. More...
struct  POINT
struct  TRIANGLE
class  Polygonizer
 Polygonizer is the class used to perform polygonization. More...
class  QEM
struct  Ray
class  RGrid
 Regular voxel grid. More...
class  VolSaver
class  VolSaverAscii
class  VolSaverFloat
class  EdgeMap
class  ParSurf
class  ThreeDDDA
 A ThreeDDDA is a class for traversing a grid of cells. More...
class  Triangle
class  TrilinFilter
class  TriMesh
 A Triangle Mesh struct. More...

Typedefs

typedef POINT VERTEX
typedef POINT NORMAL

Enumerations

enum  ToTetraHedralize { TET = 0, NOTET = 1 }

Functions

void create_tri_accel (Vec3f A, Vec3f B, Vec3f C, TriAccel &tri_accel)
bool intersect2 (Ray &ray, const TriAccel &acc, double t_max)
void IntersectAlltrianglesInLeaf (const BSPLeaf *leaf, Ray &ray, double t_max)
template<class T , class F >
void _for_each_voxel (T *data, int x_dim, int xy_dim, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor, const CGLA::Vec3i &offset=CGLA::Vec3i(0))
template<class T , class F >
void _for_each_voxel (T *data, const CGLA::Vec3i &dims, F &functor, const CGLA::Vec3i &offset=CGLA::Vec3i(0))
template<class T , class F >
void for_each_voxel (RGrid< T > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class F >
void for_each_voxel (RGrid< T > &grid, F &functor)
template<class T , class F >
void for_each_voxel_ordered (RGrid< T > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class F >
void for_each_voxel_ordered (RGrid< T > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_cell (HGrid< T, CellT > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class CellT , class F >
void for_each_cell (HGrid< T, CellT > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_voxel (HGrid< T, CellT > &grid, const CGLA::Vec3i &_p0, const CGLA::Vec3i &_p7, F &functor)
template<class T , class CellT , class F >
void for_each_voxel (HGrid< T, CellT > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_ordered (HGrid< T, CellT > &grid, const CGLA::Vec3i &_p0, const CGLA::Vec3i &_p7, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_ordered (HGrid< T, CellT > &grid, F &functor)
template<class G >
void clear_region (G &grid, const typename G::DataType &value)
template<class G >
void clear_region (G &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, const typename G::DataType &value)
template<class T , class F >
void for_each_voxel_const (const RGrid< T > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class F >
void for_each_voxel_const (const RGrid< T > &grid, F &functor)
template<class T , class F >
void for_each_voxel_ordered_const (const RGrid< T > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class F >
void for_each_voxel_ordered_const (const RGrid< T > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_cell_const (const HGrid< T, CellT > &grid, const CGLA::Vec3i &p0, const CGLA::Vec3i &p7, F &functor)
template<class T , class CellT , class F >
void for_each_cell_const (const HGrid< T, CellT > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_const (const HGrid< T, CellT > &grid, const CGLA::Vec3i &_p0, const CGLA::Vec3i &_p7, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_const (const HGrid< T, CellT > &grid, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_ordered_const (const HGrid< T, CellT > &grid, const CGLA::Vec3i &_p0, const CGLA::Vec3i &_p7, F &functor)
template<class T , class CellT , class F >
void for_each_voxel_ordered_const (const HGrid< T, CellT > &grid, F &functor)
const CGLA::Vec3i NULL_FACE (-1,-1,-1)
void load (const std::string &filename, TriMesh &mesh)
 Load a TriMesh from a file. Loader chosen based on extension.
template<class T >
bool load_raw (const string &file, RGrid< T > &grid)
template bool load_raw (const string &, RGrid< unsigned char > &grid)
template bool load_raw (const string &, RGrid< unsigned short > &grid)
template bool load_raw (const string &, RGrid< short > &grid)
template bool load_raw (const string &, RGrid< float > &grid)
void obj_load (const std::string &filename, TriMesh &mesh)
 Load a TriMesh from an OBJ file.
void ply_load (const std::string &fn, Geometry::TriMesh &_mesh)
template<class G >
void save_raw_float (const std::string &name, G &grid)
template<class G >
void save_raw_byte (const std::string &name, G &grid, const typename G::DataType &min_val, const typename G::DataType &max_val)
template<class G >
void save_raw_ascii (const std::string &name, G &grid, const typename G::DataType &min_val, const typename G::DataType &max_val)
void tessellate (IndexedFaceSet &face_set, ParSurf &s, Grid2D< Vec3f > &inigrid)
void tessellate (IndexedFaceSet &face_set, ParSurf &s, float u_min, float u_max, float v_min, float v_max, int n, int m)
void tessellate (IndexedFaceSet &face_set, ParSurf &s, std::vector< Vec2f > uv_points, std::vector< Vec3i > triangles)
void tessellate (IndexedFaceSet &face_set, ParSurf &s, std::vector< CGLA::Vec2f > uv_points, std::vector< CGLA::Vec3i > triangles)
float SqrDistance (const Vec3f &rkPoint, const Triangle &rkTri)

Variables

const float DIST_THRESH = 5.0e-4f
const int MAX_DEPTH = 25
const Vec3f N6f [6]
const Vec3i N6i [6]
const Vec3d N6d [6]
const Vec3f N26f [26]
const Vec3i N26i [26]
const Vec3d N26d [26]
const Vec3i CubeCorners8i [8]
const Vec3f CubeCorners8f [8]
const double d_eps = 1.0e-12
const float f_eps = 1.0e-6f
float MAX_ERR = 5
float MAX_DIST = 5
int ADAPTIVE = false
const float EPSILON = 1e-10f

Detailed Description

A namespace for utilities related to geometry.

This namespace contains a wide range of stuff: Spatial datastructures voxel grids and related classes as well as a simple triangle mesh class.


Function Documentation

template<class T , class F >
void Geometry::for_each_voxel ( RGrid< T > &  grid,
const CGLA::Vec3i p0,
const CGLA::Vec3i p7,
F &  functor 
)

Loop over all voxels in a sub-region (slice) of an RGrid and invoke a functor on each voxel. The grid is the first argument, the slice is specified by the two subsequent args, and the functor is the last argument.

template<class T , class F >
void Geometry::for_each_voxel ( RGrid< T > &  grid,
F &  functor 
)

Loop over all voxels in an entire RGrid. Grid is the first argument, and a functor is the second. For each voxel, an operation specified by the functor is performed.

template<class T , class F >
void Geometry::for_each_voxel_const ( const RGrid< T > &  grid,
const CGLA::Vec3i p0,
const CGLA::Vec3i p7,
F &  functor 
)

Loop over all voxels in a sub-region (slice) of an RGrid and invoke a functor on each voxel. The grid is the first argument, the slice is specified by the two subsequent args, and the functor is the last argument.

template<class T , class F >
void Geometry::for_each_voxel_const ( const RGrid< T > &  grid,
F &  functor 
)

Loop over all voxels in an entire RGrid. Grid is the first argument, and a functor is the second. For each voxel, an operation specified by the functor is performed.

template<class T , class F >
void Geometry::for_each_voxel_ordered ( RGrid< T > &  grid,
const CGLA::Vec3i p0,
const CGLA::Vec3i p7,
F &  functor 
)

For each voxel (ordered). The idea of ordered traversal is that we traverse the volume in a systematic fashion as opposed to traversing simply according to the memory layout of the volume data structure. This is important e.g. if we want to save the volume in raw format. For an RGrid, there is no difference though.

template<class T , class F >
void Geometry::for_each_voxel_ordered_const ( const RGrid< T > &  grid,
const CGLA::Vec3i p0,
const CGLA::Vec3i p7,
F &  functor 
)

For each voxel (ordered). The idea of ordered traversal is that we traverse the volume in a systematic fashion as opposed to traversing simply according to the memory layout of the volume data structure. This is important e.g. if we want to save the volume in raw format. For an RGrid, there is no difference though.

void Geometry::ply_load ( const std::string &  fn,
Geometry::TriMesh mesh 
)

Load geometry from a ply file into a TriMesh. This is a very crude loader which only extracts the raw geometry.


Variable Documentation

const CGLA::Vec3f Geometry::CubeCorners8f
Initial value:
 
        {
                Vec3f(0,0,0),
                Vec3f(1,0,0),
                Vec3f(0,1,0),
                Vec3f(1,1,0),
                Vec3f(0,0,1),
                Vec3f(1,0,1),
                Vec3f(0,1,1),
                Vec3f(1,1,1),
        }
const CGLA::Vec3i Geometry::CubeCorners8i
Initial value:
 
                {
                        Vec3i(0,0,0),
                        Vec3i(1,0,0),
                        Vec3i(0,1,0),
                        Vec3i(1,1,0),
                        Vec3i(0,0,1),
                        Vec3i(1,0,1),
                        Vec3i(0,1,1),
                        Vec3i(1,1,1),
                }
const CGLA::Vec3d Geometry::N6d
Initial value:
        {
                Vec3d(-1,0,0),
                Vec3d( 1,0,0),
                Vec3d( 0,-1,0),
                Vec3d( 0, 1,0),
                Vec3d( 0,0,-1),
                Vec3d( 0,0,1)           
        }
const CGLA::Vec3f Geometry::N6f
Initial value:
        {
                Vec3f(-1,0,0),
                Vec3f( 1,0,0),
                Vec3f( 0,-1,0),
                Vec3f( 0, 1,0),
                Vec3f( 0,0,-1),
                Vec3f( 0,0,1)
        }
const CGLA::Vec3i Geometry::N6i
Initial value:
        {
                Vec3i(-1,0,0),
                Vec3i( 1,0,0),
                Vec3i( 0,-1,0),
                Vec3i( 0, 1,0),
                Vec3i( 0,0,-1),
                Vec3i( 0,0,1)           
        }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations