aimstil  5.0.5
meshUtils.h File Reference
#include <cmath>
#include <numeric>
#include <boost/shared_ptr.hpp>
#include "aims/mesh/surface.h"
#include "aims/vector/vector.h"
#include "til/functors.h"
#include "til/is_traits.h"
#include "til/loop.h"
#include "til/numeric_array.h"
#include "til/TExpr.h"
#include "til/traits.h"
#include "cyclic_iterator.h"
#include "geometrics.h"
#include "globalTraits.h"
#include "Mesh.h"
#include "MeshTraits.h"
#include "miscUtils.h"
#include "mesh_utils.tpp"
Include dependency graph for meshUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  MeshTraits< T >
 
class  til::Get_edges_and_faces< TFaceCollection >
 
class  til::Mesh_curvature2< TVertexXsr, TCircularNeighborXsr, prec_type >
 
class  til::Mesh_curvature< TVertexCollection, TCircularNeighborIndices, prec_type >
 
class  til::policy::IntegerIndexing< TCollection >
 Mesh policy for vertices indexed with an integer. More...
 
struct  til::policy::IteratorIndexing< TIterator >
 Return value pointed at by an iterator. More...
 
struct  til::policy::GraphIteratorIndexing_Position< TIterator >
 
struct  til::policy::GraphIteratorIndexing_Neighbors< TIterator >
 
class  til::MeshCurvature2< TVertexAccessPolicy, TCircularNeighborhoodAccessPolicy, prec_type >
 
class  til::GonzalezClustering< TData, TPrec, TDist >
 Gonzalez clustering. More...
 
class  til::ScaleIndependantLaplacianSmoothing< TVertexAccessPolicy, TNeighborhoodAccessPolicy, TVertexAccessPolicy2 >
 
class  til::LaplacianSmoothing< TInputAccessPolicy, TOutputAccessPolicy, TNeighborhoodAccessPolicy >
 Discrete Laplacian smoothing. More...
 
class  til::LambdaMuSmoothing< TVertexAccessPolicy, TNeighborhoodAccessPolicy >
 
class  til::Neighboring_faces< T >
 
struct  til::Neighboring_faces< T >::InconsistentArguments
 

Namespaces

 til
 Belongs to package Box Do not include directly, include til/Box.h instead.
 
 til::detail
 Multiply an image with another object.
 
 til::policy
 

Functions

AimsSurfaceTriangle * makeSphere (const Point3df &center, float radius, int iter)
 
template<typename TMesh >
std::size_t til::getVertexNumber (const TMesh &, std::size_t i)
 Return the index of vertex v[i] – which is, obviously, i. More...
 
template<typename TMesh , typename TVertex >
boost::enable_if< is_same_naked< typename MeshTraits< TMesh >::Vertex, TVertex >, std::size_t >::type til::getVertexNumber (const TMesh &mesh, TVertex *p)
 Return the index of the vertex pointed at by *p. More...
 
void til::detail::convert_aimsmeshTomesh1 (const AimsTimeSurface< 3, Void > &meshFrom, til::Mesh1 &meshTo)
 
void til::detail::convert_mesh1Toaimsmesh (const til::Mesh1 &meshFrom, AimsTimeSurface< 3, Void > &meshTo)
 
template<class TMeshFrom , class TMeshTo >
void til::detail::convert_mesh_2 (const TMeshFrom &meshFrom, TMeshTo &meshTo)
 When indices of from are numbers and two are pointers. More...
 
template<class TMeshFrom , class TMeshTo >
void til::detail::convert_mesh_3 (const TMeshFrom &meshFrom, TMeshTo &meshTo)
 
template<typename TFaceCollection >
void til::get_edges_and_faces (TFaceCollection const &faces, std::vector< std::pair< std::size_t, std::size_t > > &res, std::vector< std::vector< std::size_t > > &newfaces)
 
template<typename TFaceCollection >
shared_ptr< std::vector< std::pair< std::size_t, std::size_t > > > til::faces2edges (TFaceCollection const &faces)
 Collects edges from a set of faces. More...
 
template<typename TNeighborhoodCollection >
void til::neighborhoods2edges (TNeighborhoodCollection const &neigh, std::vector< std::pair< std::size_t, std::size_t > > &edges)
 Collects edges from a set of neighbors. More...
 
template<typename TFaceCollection >
shared_ptr< std::vector< std::vector< typename TFaceCollection::value_type::value_type > > > til::circular_neighborhoods (TFaceCollection const &faces, std::size_t nVertices)
 Get point neighbors so that they form a loop around points. More...
 
template<typename TVertexCollection , typename TFaceCollection >
shared_ptr< std::vector< std::vector< typename TFaceCollection::value_type::value_type > > > til::circular_neighborhoods (const TVertexCollection &vertices, const TFaceCollection &faces)
 
template<typename TMesh >
shared_ptr< std::vector< std::vector< typename MeshTraits< TMesh >::FaceIndex::value_type > > > til::getNeighborIndices (const TMesh &mesh)
 
template<typename TVertexCollection , typename TFaceIndexCollection >
void til::getNeighborIndices (const TVertexCollection &vertices, const TFaceIndexCollection &faces, std::vector< std::vector< std::size_t > > &neigh)
 
template<typename TParam >
detail::AddNeighborIndexAttribute< Mesh< TParam > > til::addNeighborsToMesh (const Mesh< TParam > &mesh)
 
template<typename TMesh , typename TContainer , typename TFunctor >
void til::detail::for_each_neighbors_N (const TMesh &mesh, TContainer &c, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and another container. More...
 
template<typename TMesh , typename TContainer , typename TFunctor >
void til::detail::for_each_neighbors_V (const TMesh &mesh, TContainer &c, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and another container. More...
 
template<typename TMesh , typename TContainer , typename TFunctor >
boost::enable_if_c< is_container< typename TContainer::value_type >::value >::type til::for_each_neighbors (const TMesh &mesh, TContainer &c1, TFunctor f)
 
template<typename TMesh , typename TContainer , typename TFunctor >
boost::enable_if_c< !is_container< typename TContainer::value_type >::value >::type til::for_each_neighbors (const TMesh &mesh, TContainer &c1, TFunctor f)
 
template<typename TMesh , typename TContainer1 , typename TContainer2 , typename TFunctor >
void til::detail::for_each_neighbors_NN (const TMesh &mesh, TContainer1 &c1, TContainer2 &c2, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and two extra containers. More...
 
template<typename TMesh , typename TContainer1 , typename TContainer2 , typename TFunctor >
void til::detail::for_each_neighbors_NV (const TMesh &mesh, TContainer1 &c1, TContainer2 &c2, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and two extra containers. More...
 
template<typename TMesh , typename TContainer1 , typename TContainer2 , typename TFunctor >
boost::enable_if_c< is_container< typename TContainer1::value_type >::value &&is_container< typename TContainer2::value_type >::value >::type til::for_each_neighbors (const TMesh &mesh, TContainer1 &c1, TContainer2 &c2, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and two extra containers. More...
 
template<typename TMesh , typename TContainer1 , typename TContainer2 , typename TFunctor >
boost::enable_if_c< is_container< typename TContainer1::value_type >::value &&!is_container< typename TContainer2::value_type >::value >::type til::for_each_neighbors (const TMesh &mesh, TContainer1 &c1, TContainer2 &c2, TFunctor f)
 Apply a functor for each pair (vertex, neighbor_of_vertex), given a mesh and two extra containers. More...
 
template<typename TPrecision , typename TMesh >
boost::enable_if_c< MeshTraits< TMesh >::has_neighbor_indices >::type til::getEdgeLengths (const TMesh &mesh, std::vector< std::vector< TPrecision > > &lengths)
 Computes edge lengths of a mesh. More...
 
template<typename TCollection , typename TPrec >
shared_ptr< std::vector< typename TCollection::const_iterator > > til::gonzalez_clustering (const TCollection &data, TPrec maxDiam)
 Gonzalez clustering. More...
 
template<typename TPrec , typename TVertexIndex , typename TVertexCollection , typename TNeighborhood , typename TVertex >
TPrec til::dist2_surface (const TVertex &p, TVertexIndex i, const TVertexCollection &vertices, const TNeighborhood &neighc)
 Simple flattening of a point and its neighborhood. More...
 
template<typename TPrec , typename TVertexIndex , typename TVertexCollection , typename TNeighborhood , typename TVertex >
numeric_array< double, 3 > til::closest_normal (const TVertex &p, TVertexIndex i, const TVertexCollection &vertices, const TNeighborhood &neighc)
 Returns the index of the neighborhood that is the closest. More...
 
template<typename TVertex >
void til::laplacian_smoothing (std::vector< TVertex > &vertices, std::vector< std::vector< std::size_t > > &neighbors, unsigned int nstep, double coeff)
 Laplacian smoothing – helper function. More...
 
template<typename NeighborCollection , typename NeighborCollectionOut >
void til::get_n_neighborhood (NeighborCollection const &neigh, NeighborCollectionOut &neigh_n_out, unsigned int n)
 Computes the n-neighborhood, i.e. collection of neighbors that are at most n jumps away. More...
 
template<typename T >
void til::neighbors2edges (std::vector< std::vector< T > > const &neighbors, std::vector< std::pair< T, T > > &edges)
 Convert a set of neighborhoods into a set of edges. More...
 
template<typename T >
void til::neighboring_faces (std::vector< std::vector< T > > const &cneighs, std::vector< til::numeric_array< T, 3 > > const &faces, std::vector< std::vector< T > > &neighborfaces)
 Computes the index of the neighboring faces. More...
 

Function Documentation

◆ makeSphere()

AimsSurfaceTriangle* makeSphere ( const Point3df &  center,
float  radius,
int  iter 
)
Parameters
centerthe center of the sphere
radiusthe radius of the spere
iterthe number of subdivision iterations