DGtal 1.4.0
Loading...
Searching...
No Matches
DGtal::CellGeometryFunctions< TKSpace, 3, 3 > Struct Template Reference

#include <DGtal/geometry/volumes/CellGeometry.h>

Public Types

typedef TKSpace KSpace
 
typedef KSpace::Space Space
 
typedef KSpace::Cell Cell
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CCellularGridSpaceND< TKSpace >))
 
 BOOST_STATIC_ASSERT (TKSpace::dimension==3)
 

Static Public Member Functions

template<typename PointelIterator >
static std::unordered_set< typename KSpace::CellgetIncidentCellsToPointels (const KSpace &K, PointelIterator itB, PointelIterator itE)
 
template<typename PointIterator >
static std::unordered_set< typename KSpace::CellgetIncidentCellsToPoints (const KSpace &K, PointIterator itB, PointIterator itE)
 
template<typename PointIterator >
static UnorderedSetByBlock< typename KSpace::Point, Splitter< typename KSpace::Point, uint64_t > > getIncidentKPointsToPoints (const KSpace &K, PointIterator itB, PointIterator itE)
 

Detailed Description

template<typename TKSpace>
struct DGtal::CellGeometryFunctions< TKSpace, 3, 3 >

Specialization for 3-cells in 3D.

Template Parameters
TKSpacean arbitrary model of CCellularGridSpaceND.

Definition at line 914 of file CellGeometry.h.

Member Typedef Documentation

◆ Cell

template<typename TKSpace >
typedef KSpace::Cell DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::Cell

Definition at line 920 of file CellGeometry.h.

◆ KSpace

template<typename TKSpace >
typedef TKSpace DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::KSpace

Definition at line 918 of file CellGeometry.h.

◆ Space

template<typename TKSpace >
typedef KSpace::Space DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::Space

Definition at line 919 of file CellGeometry.h.

Member Function Documentation

◆ BOOST_CONCEPT_ASSERT()

template<typename TKSpace >
DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::BOOST_CONCEPT_ASSERT ( (concepts::CCellularGridSpaceND< TKSpace >) )

◆ BOOST_STATIC_ASSERT()

template<typename TKSpace >
DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::BOOST_STATIC_ASSERT ( TKSpace::dimension = =3)

◆ getIncidentCellsToPointels()

template<typename TKSpace >
template<typename PointelIterator >
static std::unordered_set< typename KSpace::Cell > DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::getIncidentCellsToPointels ( const KSpace & K,
PointelIterator itB,
PointelIterator itE )
inlinestatic
Template Parameters
PointelIteratorany model of forward iterator on pointels.
Parameters
Ka valid cellular grid space large enough to hold the cells.
itBthe start of a range of pointels.
itEpast the end of a range of pointels.
Returns
the incident 3-cells to the given range of pointels [itB, itE).

Definition at line 930 of file CellGeometry.h.

932 {
933 std::unordered_set<typename KSpace::Cell> cells;
934 for ( auto it = itB; it != itE; ++it )
935 {
936 auto pointel = *it;
937 auto linelxp = K.uIncident( pointel, 0, true );
938 auto linelxm = K.uIncident( pointel, 0, false );
939 auto surfxpyp = K.uIncident( linelxp, 1, true );
940 auto surfxpym = K.uIncident( linelxp, 1, false );
941 auto surfxmyp = K.uIncident( linelxm, 1, true );
942 auto surfxmym = K.uIncident( linelxm, 1, false );
943 cells.insert( K.uIncident( surfxpyp, 2, true ) );
944 cells.insert( K.uIncident( surfxpyp, 2, false ) );
945 cells.insert( K.uIncident( surfxpym, 2, true ) );
946 cells.insert( K.uIncident( surfxpym, 2, false ) );
947 cells.insert( K.uIncident( surfxmyp, 2, true ) );
948 cells.insert( K.uIncident( surfxmyp, 2, false ) );
949 cells.insert( K.uIncident( surfxmym, 2, true ) );
950 cells.insert( K.uIncident( surfxmym, 2, false ) );
951 }
952 return cells;
953 }
KSpace K

References K.

◆ getIncidentCellsToPoints()

template<typename TKSpace >
template<typename PointIterator >
static std::unordered_set< typename KSpace::Cell > DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::getIncidentCellsToPoints ( const KSpace & K,
PointIterator itB,
PointIterator itE )
inlinestatic
Template Parameters
PointIteratorany model of forward iterator on points.
Parameters
Ka valid cellular grid space large enough to hold the cells.
itBthe start of a range of points.
itEpast the end of a range of points.
Returns
the incident 3-cells to the given range of points [itB, itE).
Note
General method. Note as efficient as specializations.

Definition at line 964 of file CellGeometry.h.

966 {
967 std::unordered_set<typename KSpace::Cell> cells;
968 for ( auto it = itB; it != itE; ++it )
969 {
970 auto pointel = K.uPointel( *it );
971 auto linelxp = K.uIncident( pointel, 0, true );
972 auto linelxm = K.uIncident( pointel, 0, false );
973 auto surfxpyp = K.uIncident( linelxp, 1, true );
974 auto surfxpym = K.uIncident( linelxp, 1, false );
975 auto surfxmyp = K.uIncident( linelxm, 1, true );
976 auto surfxmym = K.uIncident( linelxm, 1, false );
977 cells.insert( K.uIncident( surfxpyp, 2, true ) );
978 cells.insert( K.uIncident( surfxpyp, 2, false ) );
979 cells.insert( K.uIncident( surfxpym, 2, true ) );
980 cells.insert( K.uIncident( surfxpym, 2, false ) );
981 cells.insert( K.uIncident( surfxmyp, 2, true ) );
982 cells.insert( K.uIncident( surfxmyp, 2, false ) );
983 cells.insert( K.uIncident( surfxmym, 2, true ) );
984 cells.insert( K.uIncident( surfxmym, 2, false ) );
985 }
986 return cells;
987 }

References K.

◆ getIncidentKPointsToPoints()

template<typename TKSpace >
template<typename PointIterator >
static UnorderedSetByBlock< typename KSpace::Point, Splitter< typename KSpace::Point, uint64_t > > DGtal::CellGeometryFunctions< TKSpace, 3, 3 >::getIncidentKPointsToPoints ( const KSpace & K,
PointIterator itB,
PointIterator itE )
inlinestatic
Template Parameters
PointIteratorany model of forward iterator on points.
Parameters
Ka valid cellular grid space large enough to hold the cells.
itBthe start of a range of points.
itEpast the end of a range of points.
Returns
the incident 3-kpoints to the given range of points [itB, itE).

Definition at line 998 of file CellGeometry.h.

1000 {
1001 UnorderedSetByBlock< typename KSpace::Point,
1002 Splitter< typename KSpace::Point, uint64_t> > kpoints;
1003 for ( auto it = itB; it != itE; ++it )
1004 {
1005 auto kp = K.uKCoords( K.uPointel( *it ) );
1006 kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] - 1, kp[ 2 ] - 1 );
1007 kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] - 1, kp[ 2 ] - 1 );
1008 kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] + 1, kp[ 2 ] - 1 );
1009 kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] + 1, kp[ 2 ] - 1 );
1010 kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] - 1, kp[ 2 ] + 1 );
1011 kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] - 1, kp[ 2 ] + 1 );
1012 kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] + 1, kp[ 2 ] + 1 );
1013 kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] + 1, kp[ 2 ] + 1 );
1014 }
1015 return kpoints;
1016 }
PointVector< dim, Integer > Point

References K.


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