DSC
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros
Namespaces | Classes | Enumerations | Functions
is_mesh Namespace Reference

Namespaces

 util
 

Classes

class  Geometry
 
class  MultipleGeometry
 
class  Point
 
class  Sphere
 
class  Cube
 
class  Cylinder
 
class  Plane
 
class  Circle
 
class  Square
 
class  AttributeVector
 
class  Edge
 
class  Face
 
struct  GarbageCollectDeletions
 
class  ISMesh
 
class  NodeIterator
 
class  EdgeIterator
 
class  FaceIterator
 
class  TetrahedronIterator
 
class  kernel
 
class  kernel_iterator
 
class  Key
 
class  NodeKey
 
class  EdgeKey
 
class  FaceKey
 
class  TetrahedronKey
 
class  Node
 
class  QueryResultIterator
 
class  QueryResult
 
class  Query
 
class  Simplex
 
class  SimplexSet
 
class  Tetrahedron
 

Enumerations

enum  SetType { Union, Intersection }
 
enum  QueryType { All, Interface, Boundary }
 

Functions

template<typename key_type , typename value_type >
void run_for_each_par (std::function< void(value_type &, int)> fn, kernel< key_type, value_type > *kernel, int from, int to, int threadid)
 
template<typename value_type , typename kernel_type , typename key_type >
void run_for_each_par_sp (std::function< void(value_type &, int)> fn, kernel_type *kernel, int threadid, int actualthread, AttributeVector< key_type, int > *attributeVector)
 
void scale (std::vector< vec3 > &points, double size)
 
void import_tet_mesh (const std::string &filename, std::vector< vec3 > &points, std::vector< int > &tets, std::vector< int > &tet_labels)
 
void import_surface_mesh (const std::string &filename, std::vector< vec3 > &points, std::vector< int > &triangleIndices)
 
void import_voxel_grid (const std::string &filename, vec3 &origin, vec3 &voxel_size, int &Ni, int &Nj, int &Nk, std::vector< int > &voxels)
 
std::shared_ptr< Geometryload_geometry (std::ifstream &file)
 
void import_geometry (const std::string &filename, vec3 &origin, vec3 &size, double &discretization, std::vector< unsigned int > &labels, std::vector< std::shared_ptr< Geometry >> &geometries)
 
void export_tet_mesh (const std::string &filename, std::vector< vec3 > &points, std::vector< int > &tets, std::vector< int > &tet_labels)
 
void export_surface_mesh (const std::string &filename, std::vector< vec3 > &points, std::vector< int > &faces)
 
void export_tet_mesh (const std::string &filename, ISMesh &mesh)
 
void export_surface_mesh (const std::string &filename, ISMesh &mesh)
 
void export_surface_mesh_debug (const std::string &filename, ISMesh &mesh)
 
vec3 addEpsilonOffset (vec3 v)
 
template<typename key_type >
bool operator== (const SimplexSet< key_type > &A, const SimplexSet< key_type > &B) noexcept
 
template<typename key_type >
SimplexSet< key_type > operator+ (const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
 
template<typename key_type >
SimplexSet< key_type > && operator+ (SimplexSet< key_type > &&A, const SimplexSet< key_type > &B)
 
template<typename key_type >
SimplexSet< key_type > && operator+ (SimplexSet< key_type > &&A, SimplexSet< key_type > &&B)
 
template<typename key_type >
SimplexSet< key_type > && operator+ (const SimplexSet< key_type > &A, SimplexSet< key_type > &&B)
 
template<typename key_type >
SimplexSet< key_type > operator- (const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
 
template<typename key_type >
SimplexSet< key_type > && operator- (SimplexSet< key_type > &&A, const SimplexSet< key_type > &B)
 
template<typename key_type >
SimplexSet< key_type > operator- (const SimplexSet< key_type > &A, const key_type &key)
 
template<typename key_type >
SimplexSet< key_type > && operator- (SimplexSet< key_type > &&A, const key_type &key)
 
template<typename key_type >
SimplexSet< key_type > operator& (const SimplexSet< key_type > &A, const SimplexSet< key_type > &B)
 
template<typename key_type >
SimplexSet< key_type > && operator& (SimplexSet< key_type > &&A, const SimplexSet< key_type > &B)
 

Detailed Description

Pseudocode

  1. Find "back" boundary triangle (O(n))
  2. Find enclosing tetrahedron
  3. While tetrahedron exists 3.1 Find intersection with other faces on tetrahedron 3.2 Find new tetrahedron

Raytracing in ISMesh datastructure. Assumes that the boundary surface of the ISMesh is convex Assumes that the set of boundary faces are static (if not call rebuild_boundary_cache() after changes).

Function Documentation

void is_mesh::export_surface_mesh ( const std::string &  filename,
std::vector< vec3 > &  points,
std::vector< int > &  faces 
)

Exports the surface mesh to an .obj file.

void is_mesh::export_surface_mesh ( const std::string &  filename,
ISMesh &  mesh 
)

Exports the surface mesh to an .obj file.

void is_mesh::export_surface_mesh_debug ( const std::string &  filename,
ISMesh &  mesh 
)

Exports the debug surface mesh to an .obj file.

void is_mesh::export_tet_mesh ( const std::string &  filename,
std::vector< vec3 > &  points,
std::vector< int > &  tets,
std::vector< int > &  tet_labels 
)

Exports the mesh as a .dsc file.

void is_mesh::export_tet_mesh ( const std::string &  filename,
ISMesh &  mesh 
)

Exports the mesh as a .dsc file.

void is_mesh::import_geometry ( const std::string &  filename,
vec3 origin,
vec3 size,
double &  discretization,
std::vector< unsigned int > &  labels,
std::vector< std::shared_ptr< Geometry >> &  geometries 
)

Imports a volume defined by geometries from an .geo file.

void is_mesh::import_surface_mesh ( const std::string &  filename,
std::vector< vec3 > &  points,
std::vector< int > &  triangleIndices 
)

Imports a surface mesh from an .obj file.

void is_mesh::import_tet_mesh ( const std::string &  filename,
std::vector< vec3 > &  points,
std::vector< int > &  tets,
std::vector< int > &  tet_labels 
)

Imports a mesh from a .dsc file.

void is_mesh::import_voxel_grid ( const std::string &  filename,
vec3 origin,
vec3 voxel_size,
int &  x,
int &  y,
int &  z,
std::vector< int > &  voxels 
)

Imports a voxel grid from an .txt file.

std::shared_ptr< Geometry > is_mesh::load_geometry ( std::ifstream &  file)

Imports a geometry from the file.

template<typename key_type >
SimplexSet<key_type> is_mesh::operator& ( const SimplexSet< key_type > &  A,
const SimplexSet< key_type > &  B 
)

Returns the intersection of sets A and B.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator& ( SimplexSet< key_type > &&  A,
const SimplexSet< key_type > &  B 
)

Returns the intersection of sets A and B.

template<typename key_type >
SimplexSet<key_type> is_mesh::operator+ ( const SimplexSet< key_type > &  A,
const SimplexSet< key_type > &  B 
)

Returns the union of the two sets A and B.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator+ ( SimplexSet< key_type > &&  A,
const SimplexSet< key_type > &  B 
)

Returns the union of the two sets A and B.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator+ ( SimplexSet< key_type > &&  A,
SimplexSet< key_type > &&  B 
)

Returns the union of the two sets A and B.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator+ ( const SimplexSet< key_type > &  A,
SimplexSet< key_type > &&  B 
)

Returns the union of the two sets A and B.

template<typename key_type >
SimplexSet<key_type> is_mesh::operator- ( const SimplexSet< key_type > &  A,
const SimplexSet< key_type > &  B 
)

Returns set A without the elements in set B.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator- ( SimplexSet< key_type > &&  A,
const SimplexSet< key_type > &  B 
)

Returns set A without the elements in set B.

template<typename key_type >
SimplexSet<key_type> is_mesh::operator- ( const SimplexSet< key_type > &  A,
const key_type &  key 
)

Returns set A without the element key.

template<typename key_type >
SimplexSet<key_type>&& is_mesh::operator- ( SimplexSet< key_type > &&  A,
const key_type &  key 
)

Returns set A without the element key.