Biomechanical Joint Model
 Author: Anderson Maciel

private_marching_cubes.h

Go to the documentation of this file.
00001 /*@#---------------------------------------------------------------------------
00002  PROJECT            : PHD THESIS
00003  MODULE             : PHYSICALLY-BASED DEFORMATION
00004 
00005  FILE               : marching_cubes.h
00006  CREATION DATE      : Thu Nov 11 11:30:03 MET 1999
00007  CREATION AUTHOR(S) : aubel 
00008  ------------------------------------------------------------------------------
00009  KEYWORD(S)         : marching cubes, voxelisation, volume
00010  DEFINED TYPE(S)    : 
00011  RELATED TYPE(S)    : 
00012 
00013  FUNCTIONALITY      : 
00014  ------------------------------------------------------------------------------
00015  LANGAGE            : Ansi C++
00016  SYSTEM             : UNIX V 6.x / SGI
00017  GRAPHIC LIBRARY    : SGI  
00018  ------------------------------------------------------------------------------
00019  PROJECT DIRECTOR   : D. THALMANN
00020  LAB                : EPFL- LIG
00021  --------------------------------------------------------------------------#@*/
00022 #ifndef MC_PRIVATE_MARCHING_CUBES_H
00023 #define MC_PRIVATE_MARCHING_CUBES_H
00024 
00025 #include <RayCasting/ray.h>
00026 #include <LinAlg/linalg.h>
00027 #include <vector>
00028 
00029 //namespace MarchingCubes{
00030 
00031    struct Triangle;
00032    struct GridCell;   
00033    struct Voxel;   
00034    struct Edge;   
00035    class marchingCubes;
00036    template <class T> class HashMap;   
00037 
00038    class Primitive;
00039    class Quadric;
00040    class Blob;
00041    class Ellipsoids;
00042    class Metaballs;
00043    class Metaballs_Shen;
00044    class Metaballs_exp;
00045    class MetaballsSphere;
00046    class MetaballsSphere_exp;
00047    class Mesh;
00048 
00049 //   using namespace RayCasting;
00050 //   using namespace std;
00051 //   using namespace LinAlg;
00052 //}
00053 
00054 struct GridCell {
00055    VECArray  p;             // coord of 8 vertices
00056    vector<REAL> val[8];     // field values at 8 vertices
00057    idx3 indices[8];         // indices
00058    GridCell() : p(8) {};
00059 };
00060 
00061 // Voxel: cubic volume, partially or fully contained in the object
00062 struct Voxel
00063 {
00064    idx3 id;                // (i,j,k) index      
00065    VEC  X;                 // (x,y,z) position
00066    bool done;
00067    vector<REAL> field_values;
00068 
00069    Voxel(const idx3 the_id) : X(dimspace), id(the_id), done(false), field_values() {};
00070 };
00071 
00072 struct Edge
00073 {
00074    idx3 id;                 // (i,j,k) index = sum of indices of edge's two vertices       
00075    VEC  I, N;               // intersection point / normal
00076    int  vtx_idx;
00077    bool done;
00078    Edge(const idx3 the_id) : I(dimspace), N(dimspace), id(the_id), vtx_idx(-1), done(false) {};
00079 };
00080 
00081 #endif

Generated on Thu Dec 1 10:13:39 2005 for COME - Biomechanical Joint Model by  doxygen 1.4.5