DGtal  1.1.0
Public Types | Public Member Functions | Static Public Member Functions
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 885 of file CellGeometry.h.

Member Typedef Documentation

◆ Cell

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

Definition at line 891 of file CellGeometry.h.

◆ KSpace

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

Definition at line 889 of file CellGeometry.h.

◆ Space

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

Definition at line 890 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 901 of file CellGeometry.h.

903  {
904  std::unordered_set<typename KSpace::Cell> cells;
905  for ( auto it = itB; it != itE; ++it )
906  {
907  auto pointel = *it;
908  auto linelxp = K.uIncident( pointel, 0, true );
909  auto linelxm = K.uIncident( pointel, 0, false );
910  auto surfxpyp = K.uIncident( linelxp, 1, true );
911  auto surfxpym = K.uIncident( linelxp, 1, false );
912  auto surfxmyp = K.uIncident( linelxm, 1, true );
913  auto surfxmym = K.uIncident( linelxm, 1, false );
914  cells.insert( K.uIncident( surfxpyp, 2, true ) );
915  cells.insert( K.uIncident( surfxpyp, 2, false ) );
916  cells.insert( K.uIncident( surfxpym, 2, true ) );
917  cells.insert( K.uIncident( surfxpym, 2, false ) );
918  cells.insert( K.uIncident( surfxmyp, 2, true ) );
919  cells.insert( K.uIncident( surfxmyp, 2, false ) );
920  cells.insert( K.uIncident( surfxmym, 2, true ) );
921  cells.insert( K.uIncident( surfxmym, 2, false ) );
922  }
923  return cells;
924  }

References K, and DGtal::KhalimskySpaceND< dim, TInteger >::uIncident().

◆ 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 935 of file CellGeometry.h.

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

References K, DGtal::KhalimskySpaceND< dim, TInteger >::uIncident(), and DGtal::KhalimskySpaceND< dim, TInteger >::uPointel().

◆ 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 969 of file CellGeometry.h.

971  {
972  UnorderedSetByBlock< typename KSpace::Point,
973  Splitter< typename KSpace::Point, uint64_t> > kpoints;
974  for ( auto it = itB; it != itE; ++it )
975  {
976  auto kp = K.uKCoords( K.uPointel( *it ) );
977  kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] - 1, kp[ 2 ] - 1 );
978  kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] - 1, kp[ 2 ] - 1 );
979  kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] + 1, kp[ 2 ] - 1 );
980  kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] + 1, kp[ 2 ] - 1 );
981  kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] - 1, kp[ 2 ] + 1 );
982  kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] - 1, kp[ 2 ] + 1 );
983  kpoints.emplace( kp[ 0 ] - 1, kp[ 1 ] + 1, kp[ 2 ] + 1 );
984  kpoints.emplace( kp[ 0 ] + 1, kp[ 1 ] + 1, kp[ 2 ] + 1 );
985  }
986  return kpoints;
987  }

References K, DGtal::KhalimskySpaceND< dim, TInteger >::uKCoords(), and DGtal::KhalimskySpaceND< dim, TInteger >::uPointel().


The documentation for this struct was generated from the following file:
K
KSpace K
Definition: testCubicalComplex.cpp:62
DGtal::KhalimskySpaceND::Point
PointVector< dim, Integer > Point
Definition: KhalimskySpaceND.h:425
DGtal::KhalimskySpaceND::uKCoords
const Point & uKCoords(const Cell &c) const
Return its Khalimsky coordinates.
DGtal::KhalimskySpaceND::uIncident
Cell uIncident(const Cell &c, Dimension k, bool up) const
Return the forward or backward unsigned cell incident to [c] along axis [k], depending on [up].
DGtal::KhalimskySpaceND::uPointel
Cell uPointel(Point p) const
From the digital coordinates of a point in Zn, builds the corresponding pointel (cell of dimension 0)...