IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
ipsdk::geom::Mesh3d< T > Class Template Reference

Closed mesh associated to a triangulated boundary. More...

#include <Mesh3d.h>

Inheritance diagram for ipsdk::geom::Mesh3d< T >:
ipsdk::geom::BaseTypedGeometryEntity3d< T > ipsdk::geom::BaseGeometryEntity3d ipsdk::geom::BaseGeometryEntity ipsdk::BaseObjectWithSkeleton ipsdk::BaseSerializationObject ipsdk::BaseDynamicObject

Public Types

typedef T DataType
 underlying data type associated to object
 
typedef Point3dData< T > VertexType
 vertex type associated to object
 
typedef std::vector< VertexTypeVertexColl
 collection of vertexes associated to polygon
 
typedef VertexColl::iterator VertexIterator
 iterator allowing to modify verices coordinates
 
typedef boost::shared_ptr< BoundingBox3d< DataType > > BoundingBox3dPtr
 Bounding box 3d associated to entity.
 
- Public Types inherited from ipsdk::geom::BaseTypedGeometryEntity3d< T >
typedef T DataType
 data type associated to coordinates
 

Public Member Functions

eCoordinateSystem3dType getCoordinateSystem3dType () const
 method allowing to retrieve coordinate system 3d type
 
eEntity3dType getEntity3dType () const
 method allowing to retrieve entity 3d type
 
const eMesh3dTypegetMesh3dType () const
 retrieve mesh 3d type
 
void setMesh3dType (const eMesh3dType &mesh3dType)
 setup mesh 3d type
 
bool isEmpty () const
 method allowing to check whether mesh is empty
 
ipUInt64 getNbVertices () const
 retrieve number of vertices
 
ipUInt64 getNbTriangles () const
 retrieve number of triangles
 
ipUInt64 getNbEdges () const
 retrieve number of edges
 
const VertexCollgetVertexColl () const
 retrieve vertex collection
 
VertexCollgetVertexColl ()
 access to vertex collection
 
const UInt64VectorgetVertexToHalfEdgeColl () const
 
UInt64VectorgetVertexToHalfEdgeColl ()
 
const UInt64VectorgetTriangleToHalfEdgeColl () const
 
UInt64VectorgetTriangleToHalfEdgeColl ()
 
const TriVertexIxColl & getTriVertexIxColl () const
 
TriVertexIxColl & getTriVertexIxColl ()
 
const Mesh3dHalfEdgeCollgetHalfEdgeColl () const
 retrieve half edge information collection
 
Mesh3dHalfEdgeCollgetHalfEdgeColl ()
 access to half edge information collection
 
const Mesh3dHalfEdgegetOppositeHalfEdge (const Mesh3dHalfEdge &halfEdge) const
 retrieve opposite half edge for a given half edge More...
 
const Mesh3dHalfEdgegetPreviousHalfEdge (const Mesh3dHalfEdge &halfEdge) const
 retrieve previous half edge for a given half edge More...
 
const Mesh3dHalfEdgegetNextHalfEdge (const Mesh3dHalfEdge &halfEdge) const
 retrieve next half edge for a given half edge More...
 
const VertexTypegetStartVertex (const Mesh3dHalfEdge &halfEdge) const
 retrieve start vertex associated to a given half edge More...
 
const VertexTypegetEndVertex (const Mesh3dHalfEdge &halfEdge) const
 retrieve end vertex associated to a given half edge More...
 
Triangle3d< T > extractTriangle (const ipUInt64 triangleIdx) const
 retrieve triangle associated to a given index More...
 
Triangle3d< T > extractLeftTriangle (const Mesh3dHalfEdge &halfEdge) const
 retrieve left triangle for a given half edge More...
 
Triangle3d< T > extractRightTriangle (const Mesh3dHalfEdge &halfEdge) const
 retrieve right triangle for a given half edge More...
 
BoundingBox3dPtr getBoundingBox ()
 access to the max z of the bounding box
 
BoundingBox3dPtr computeBoundingBox ()
 function that allows to compute the bounding box of entity
 
void copyFromMesh (const Mesh3d< T > &meshIn)
 function that copy the input mesh in the current instance
 
void clear ()
 clear of all mesh data
 
Constructors and destructor
 Mesh3d ()
 
 ~Mesh3d ()
 
VertexIterator beginVertex ()
 
VertexIterator endVertex ()
 
- Public Member Functions inherited from ipsdk::geom::BaseTypedGeometryEntity3d< T >
 BaseTypedGeometryEntity3d ()
 
virtual ~BaseTypedGeometryEntity3d ()=0
 
- Public Member Functions inherited from ipsdk::geom::BaseGeometryEntity3d
eCoordinateDimension getCoordinateDimension () const
 method allowing to retrieve entity underlying coordinates dimension
 
 BaseGeometryEntity3d ()
 
virtual ~BaseGeometryEntity3d ()=0
 
- Public Member Functions inherited from ipsdk::geom::BaseGeometryEntity
 BaseGeometryEntity ()
 
virtual ~BaseGeometryEntity ()=0
 
- Public Member Functions inherited from ipsdk::BaseObjectWithSkeleton
const eSklSrzModegetSerializationMode () const
 retrieve serialization flag for object More...
 
void setSerializationMode (const eSklSrzMode &sklSrzMode) const
 set serialization flag for object
 
 BaseObjectWithSkeleton ()
 
 ~BaseObjectWithSkeleton ()
 
- Public Member Functions inherited from ipsdk::BaseSerializationObject
 BaseSerializationObject ()
 Default constructor.
 
virtual ~BaseSerializationObject ()=0
 destructor
 
- Public Member Functions inherited from ipsdk::BaseDynamicObject
virtual const std::string & getClassName () const
 method allowing to retrieve object class name
 
virtual BaseDynamicObjectcreateNew () const =0
 method allowing to create new instance of current object type
 
virtual DynamicObjectPtr createShared () const =0
 method allowing to create new shared instance of current object type
 
virtual bool hasCopySupport () const =0
 check whether objet has copy support
 
virtual BaseDynamicObjectduplicate () const =0
 method allowing to duplicate current object More...
 
virtual DynamicObjectPtr duplicateShared () const =0
 method allowing shared duplication of current object More...
 
 BaseDynamicObject ()
 
virtual ~BaseDynamicObject ()=0
 

Static Public Attributes

static const eCoordinateSystem3dType::domain g_coordinateSystem3dType = eCoordinateSystem3dType::eCS3DT_Cartesian
 coordinate system associated to entity
 
static const eEntity3dType::domain g_entity3dType = eEntity3dType::eE3DT_Mesh
 type associated to entity
 
- Static Public Attributes inherited from ipsdk::geom::BaseGeometryEntity3d
static const eCoordinateDimension::domain g_coordinateDimension = eCoordinateDimension::eCD_3d
 entity underlying coordinates dimension
 

Protected Attributes

eMesh3dType _mesh3dType
 flag indicating whether mesh is exterior or interior
 
VertexColl _vertexColl
 collection of vertex associated to mesh
 
UInt64Vector _vertexToHalfEdgeColl
 
UInt64Vector _triangleToHalfEdgeColl
 
Mesh3dHalfEdgeColl _halfEdgeColl
 collection of half edge information
 
TriVertexIxColl _triVertexIxColl
 collection of triangles represented by vertices indices
 
BoundingBox3dPtr _boundingBox3d
 bounding box associated to mesh
 
- Protected Attributes inherited from ipsdk::BaseObjectWithSkeleton
eSklSrzMode _sklSrzMode
 serialization flag for object More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ipsdk::BaseSerializationObject
static ipUInt32 getVersion ()
 method allowing to retrieve class version information for serialization
 
- Static Public Member Functions inherited from ipsdk::BaseDynamicObject
static const std::string & getTypeName ()
 method allowing to retrieve name associated to class
 
- Protected Member Functions inherited from ipsdk::BaseSerializationObject
virtual BoolResult write (BaseOArchive &ar) const
 method allowing to ensure serialization write part for object
 
virtual BoolResult read (BaseIArchive &ar)
 method allowing to ensure serialization read part for object
 
- Protected Member Functions inherited from ipsdk::BaseDynamicObject
virtual void initCtorCopy (const BaseDynamicObject &object)
 
virtual void copy (const BaseDynamicObject &object)
 method allowing to copy data from another object
 

Detailed Description

template<typename T>
class ipsdk::geom::Mesh3d< T >

Closed mesh associated to a triangulated boundary.

Author
E.Noirfalise
Date
2017/08/11

Member Function Documentation

◆ getVertexToHalfEdgeColl() [1/2]

template<typename T >
IPSDK_FORCEINLINE const UInt64Vector & ipsdk::geom::Mesh3d< T >::getVertexToHalfEdgeColl ( ) const
inline

retrieve collection of indexes associating for each vertex an half edge index starting at vertex

◆ getVertexToHalfEdgeColl() [2/2]

template<typename T >
IPSDK_FORCEINLINE UInt64Vector & ipsdk::geom::Mesh3d< T >::getVertexToHalfEdgeColl ( )
inline

access to collection of indexes associating for each vertex an half edge index starting at vertex

◆ getTriangleToHalfEdgeColl() [1/2]

template<typename T >
IPSDK_FORCEINLINE const UInt64Vector & ipsdk::geom::Mesh3d< T >::getTriangleToHalfEdgeColl ( ) const
inline

retrieve collection of indexes associating for each vertex an half edge index starting at vertex

◆ getTriangleToHalfEdgeColl() [2/2]

template<typename T >
IPSDK_FORCEINLINE UInt64Vector & ipsdk::geom::Mesh3d< T >::getTriangleToHalfEdgeColl ( )
inline

access to collection of indexes associating for each vertex an half edge index starting at vertex

◆ getTriVertexIxColl() [1/2]

template<typename T >
IPSDK_FORCEINLINE const TriVertexIxColl & ipsdk::geom::Mesh3d< T >::getTriVertexIxColl ( ) const
inline

retrieve collection of faces associating for each face three vertex indices

◆ getTriVertexIxColl() [2/2]

template<typename T >
IPSDK_FORCEINLINE TriVertexIxColl & ipsdk::geom::Mesh3d< T >::getTriVertexIxColl ( )
inline

access to collection of faces associating for each face three vertex indices

◆ getOppositeHalfEdge()

template<typename T>
const Mesh3dHalfEdge& ipsdk::geom::Mesh3d< T >::getOppositeHalfEdge ( const Mesh3dHalfEdge halfEdge) const

retrieve opposite half edge for a given half edge

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge._oppositeHalfEdgeIdx is not valid

◆ getPreviousHalfEdge()

template<typename T>
const Mesh3dHalfEdge& ipsdk::geom::Mesh3d< T >::getPreviousHalfEdge ( const Mesh3dHalfEdge halfEdge) const

retrieve previous half edge for a given half edge

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge._nextHalfEdgeIdx is not valid

◆ getNextHalfEdge()

template<typename T>
const Mesh3dHalfEdge& ipsdk::geom::Mesh3d< T >::getNextHalfEdge ( const Mesh3dHalfEdge halfEdge) const

retrieve next half edge for a given half edge

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge._nextHalfEdgeIdx is not valid

◆ getStartVertex()

template<typename T>
const VertexType& ipsdk::geom::Mesh3d< T >::getStartVertex ( const Mesh3dHalfEdge halfEdge) const

retrieve start vertex associated to a given half edge

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge._startVertexIdx is not valid

◆ getEndVertex()

template<typename T>
const VertexType& ipsdk::geom::Mesh3d< T >::getEndVertex ( const Mesh3dHalfEdge halfEdge) const

retrieve end vertex associated to a given half edge

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge._oppositeHalfEdgeIdx is not valid

◆ extractTriangle()

template<typename T>
Triangle3d<T> ipsdk::geom::Mesh3d< T >::extractTriangle ( const ipUInt64  triangleIdx) const

retrieve triangle associated to a given index

Exceptions
ipsdk::geom::IPSDKGeometryExceptionif triangleIdx is not valid

◆ extractLeftTriangle()

template<typename T>
Triangle3d<T> ipsdk::geom::Mesh3d< T >::extractLeftTriangle ( const Mesh3dHalfEdge halfEdge) const

retrieve left triangle for a given half edge

Note
triangle tops are ordered counter clockwise
Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge indexes are not valid

◆ extractRightTriangle()

template<typename T>
Triangle3d<T> ipsdk::geom::Mesh3d< T >::extractRightTriangle ( const Mesh3dHalfEdge halfEdge) const

retrieve right triangle for a given half edge

Note
triangle tops are ordered counter clockwise
Exceptions
ipsdk::geom::IPSDKGeometryExceptionif halfEdge indexes are not valid

◆ beginVertex()

template<typename T >
IPSDK_FORCEINLINE Mesh3d< T >::VertexIterator ipsdk::geom::Mesh3d< T >::beginVertex ( )
inline

retrieve iterator to mesh vertex collection

◆ endVertex()

template<typename T >
IPSDK_FORCEINLINE Mesh3d< T >::VertexIterator ipsdk::geom::Mesh3d< T >::endVertex ( )
inline

retrieve iterator to mesh vertex collection

Member Data Documentation

◆ _vertexToHalfEdgeColl

template<typename T>
UInt64Vector ipsdk::geom::Mesh3d< T >::_vertexToHalfEdgeColl
protected

collection of indexes associating for each vertex an half edge index starting at vertex

◆ _triangleToHalfEdgeColl

template<typename T>
UInt64Vector ipsdk::geom::Mesh3d< T >::_triangleToHalfEdgeColl
protected

collection of indexes associating for each triangle an half edge for which triangle is on the left


The documentation for this class was generated from the following file: