DGtal 2.1.1
Loading...
Searching...
No Matches
DGtal::AxisDomainSplitter< Domain > Struct Template Reference

Splits a domain along one of the domain grid axis. More...

#include <DGtal/kernel/domains/DomainSplitter.h>

Public Types

typedef std::vector< SplitInfo< Domain > > SplitDomainsInfo
 
typedef Domain::Dimension Dimension
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CDomain< Domain >))
 
 AxisDomainSplitter (Dimension dim=0)
 Constructor.
 
SplitDomainsInfo operator() (const Domain &d, uint32_t splitHint) const
 Regularly splits a domain along one axis.
 
SplitDomainsInfo operator() (const Domain &d, uint32_t splitHint, Dimension dim) const
 Regularly splits a domain along one axis.
 

Data Fields

Dimension axis
 The axis used for the default split operator.
 

Detailed Description

template<typename Domain>
struct DGtal::AxisDomainSplitter< Domain >

Splits a domain along one of the domain grid axis.

Template Parameters
Themodel of domain to split

Definition at line 115 of file DomainSplitter.h.

Member Typedef Documentation

◆ Dimension

template<typename Domain >
typedef Domain::Dimension DGtal::AxisDomainSplitter< Domain >::Dimension

Definition at line 122 of file DomainSplitter.h.

◆ SplitDomainsInfo

template<typename Domain >
typedef std::vector<SplitInfo<Domain> > DGtal::AxisDomainSplitter< Domain >::SplitDomainsInfo

Definition at line 121 of file DomainSplitter.h.

Constructor & Destructor Documentation

◆ AxisDomainSplitter()

template<typename Domain >
DGtal::AxisDomainSplitter< Domain >::AxisDomainSplitter ( Dimension  dim = 0)
inlineexplicit

Constructor.

Parameters
dimthe split axis (default: 0)

Definition at line 132 of file DomainSplitter.h.

133 : axis( dim )
134 {}
Dimension axis
The axis used for the default split operator.

Member Function Documentation

◆ BOOST_CONCEPT_ASSERT()

template<typename Domain >
DGtal::AxisDomainSplitter< Domain >::BOOST_CONCEPT_ASSERT ( (concepts::CDomain< Domain >)  )

◆ operator()() [1/2]

template<typename Domain >
SplitDomainsInfo DGtal::AxisDomainSplitter< Domain >::operator() ( const Domain d,
uint32_t  splitHint 
) const
inline

Regularly splits a domain along one axis.

Parameters
dThe domain to split
splitHintThe targeted number of splits (clamped to the width of the domain)

Definition at line 142 of file DomainSplitter.h.

143 {
144 return (*this)( d, splitHint, axis );
145 }

References DGtal::AxisDomainSplitter< Domain >::axis.

◆ operator()() [2/2]

template<typename Domain >
SplitDomainsInfo DGtal::AxisDomainSplitter< Domain >::operator() ( const Domain d,
uint32_t  splitHint,
Dimension  dim 
) const
inline

Regularly splits a domain along one axis.

Parameters
dThe domain to split
splitHintThe targeted number of splits (clamped to the width of the domain)
dimthe split axis (default: 0)

Definition at line 154 of file DomainSplitter.h.

155 {
156 SplitDomainsInfo result;
157 if (splitHint == 0)
158 return result;
159
160 auto lower = d.lowerBound();
161 auto upper = d.upperBound();
162 auto length = upper[dim] - lower[dim] + 1;
163 uint32_t splitCount = splitHint;
164 if (splitCount > length)
165 splitCount = length;
166
167 result.reserve(splitCount);
168 auto base = length / splitCount;
169 auto rem = length % splitCount;
170
171 auto start = lower;
172 for (uint32_t i = 0; i < splitCount; ++i)
173 {
174 auto size = base + (i < rem ? 1 : 0);
175 auto end = upper;
176 end[dim] = start[dim] + size - 1;
177 result.emplace_back(Domain(start, end), 0);
178 start[dim] = end[dim] + 1;
179 }
180
181 return result;
182 };
std::uint32_t uint32_t
unsigned 32-bit integer.
Definition BasicTypes.h:62
std::vector< SplitInfo< Domain > > SplitDomainsInfo
HyperRectDomain< Space > Domain
Vector lower(const Vector &z, unsigned int k)
Vector upper(const Vector &z, unsigned int k)

References dim, lower(), DGtal::HyperRectDomain< TSpace >::lowerBound(), upper(), and DGtal::HyperRectDomain< TSpace >::upperBound().

Field Documentation

◆ axis

template<typename Domain >
Dimension DGtal::AxisDomainSplitter< Domain >::axis

The axis used for the default split operator.

Definition at line 125 of file DomainSplitter.h.

Referenced by DGtal::AxisDomainSplitter< Domain >::operator()().


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