DGtal 2.2.0
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 {}
Splits a domain along one of the domain grid axis.
Dimension axis
The axis used for the default split operator.

References axis, and dim.

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 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 {
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;
164 if (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 };
HyperRectDomain< Space > Domain
std::vector< SplitInfo< Domain > > SplitDomainsInfo

References dim, lower(), and upper().

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 AxisDomainSplitter(), and operator()().


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