Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSprayFunctionBasedDistribution Class Reference

Class that can generate randomly distributed values in the range [a..b] following an arbitrary pdf. More...

#include <KisSprayRandomDistributions.h>

+ Inheritance diagram for KisSprayFunctionBasedDistribution:

Classes

class  Private
 

Public Member Functions

bool isValid () const
 Return if this object is correctly initialized and can be used to generate values.
 
 KisSprayFunctionBasedDistribution ()
 Construct an invalid KisSprayFunctionBasedDistribution.
 
 KisSprayFunctionBasedDistribution (const KisSprayFunctionBasedDistribution &other)
 
template<typename Function >
 KisSprayFunctionBasedDistribution (int numberOfSamples, double a, double b, Function f)
 Construct a new distribution.
 
double max () const
 Return the maximum value that this distribution can produce.
 
double min () const
 Return the minimum value that this distribution can produce.
 
double operator() (KisRandomSourceSP rs) const
 Get a random value between min and max that follows the distribution.
 
KisSprayFunctionBasedDistributionoperator= (const KisSprayFunctionBasedDistribution &rhs)
 
 ~KisSprayFunctionBasedDistribution ()
 

Protected Member Functions

template<typename Function >
void initialize (size_t numberOfSamples, double a, double b, Function f)
 Function used to setup the distribution and put it in a valid state. See the constructor for the explanation of the parameters.
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

Class that can generate randomly distributed values in the range [a..b] following an arbitrary pdf.

Definition at line 19 of file KisSprayRandomDistributions.h.

Constructor & Destructor Documentation

◆ KisSprayFunctionBasedDistribution() [1/3]

KisSprayFunctionBasedDistribution::KisSprayFunctionBasedDistribution ( )

Construct an invalid KisSprayFunctionBasedDistribution.

Definition at line 162 of file KisSprayRandomDistributions.cpp.

◆ KisSprayFunctionBasedDistribution() [2/3]

template<typename Function >
KisSprayFunctionBasedDistribution::KisSprayFunctionBasedDistribution ( int numberOfSamples,
double a,
double b,
Function f )

Construct a new distribution.

Template Parameters
FunctionType of the functor to sample from
Parameters
numberOfSamplesNumber of points to sample from the function. They are sampled evenly through the range [a..b]. The first point will be sampled at a and the last one at b.
aThe lower bound of the domain of the function. The sampling will start here
bThe upper bound of the domain of the function. The sampling will start here
fThe functor that will be used to get the samples

Definition at line 167 of file KisSprayRandomDistributions.cpp.

168 : m_d(new Private)
169{
170 m_d->initialize(numberOfSamples, a, b, f);
171}

References m_d.

◆ ~KisSprayFunctionBasedDistribution()

KisSprayFunctionBasedDistribution::~KisSprayFunctionBasedDistribution ( )

Definition at line 173 of file KisSprayRandomDistributions.cpp.

174{}

◆ KisSprayFunctionBasedDistribution() [3/3]

KisSprayFunctionBasedDistribution::KisSprayFunctionBasedDistribution ( const KisSprayFunctionBasedDistribution & other)

Definition at line 176 of file KisSprayRandomDistributions.cpp.

177 : m_d(new Private)
178{
179 m_d->samples = other.m_d->samples;
180}

References m_d.

Member Function Documentation

◆ initialize()

template<typename Function >
void KisSprayFunctionBasedDistribution::initialize ( size_t numberOfSamples,
double a,
double b,
Function f )
protected

Function used to setup the distribution and put it in a valid state. See the constructor for the explanation of the parameters.

Definition at line 215 of file KisSprayRandomDistributions.cpp.

216{
217 m_d->initialize(numberOfSamples, a, b, f);
218}

References m_d.

◆ isValid()

bool KisSprayFunctionBasedDistribution::isValid ( ) const

Return if this object is correctly initialized and can be used to generate values.

Definition at line 209 of file KisSprayRandomDistributions.cpp.

210{
211 return m_d->samples.size() > 1;
212}

References m_d.

◆ max()

double KisSprayFunctionBasedDistribution::max ( ) const

Return the maximum value that this distribution can produce.

Definition at line 202 of file KisSprayRandomDistributions.cpp.

203{
205
206 return m_d->samples.back().x;
207}
bool isValid() const
Return if this object is correctly initialized and can be used to generate values.
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References isValid(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and m_d.

◆ min()

double KisSprayFunctionBasedDistribution::min ( ) const

Return the minimum value that this distribution can produce.

Definition at line 195 of file KisSprayRandomDistributions.cpp.

196{
198
199 return m_d->samples.front().x;
200}

References isValid(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and m_d.

◆ operator()()

double KisSprayFunctionBasedDistribution::operator() ( KisRandomSourceSP rs) const

Get a random value between min and max that follows the distribution.

Parameters
rsThe random source object that will be used to get a uniform value
Returns
A random value between min and max that follows the distribution

Definition at line 190 of file KisSprayRandomDistributions.cpp.

191{
192 return m_d->generate(rs->generateNormalized());
193}
qreal generateNormalized() const

References KisRandomSource::generateNormalized(), and m_d.

◆ operator=()

KisSprayFunctionBasedDistribution & KisSprayFunctionBasedDistribution::operator= ( const KisSprayFunctionBasedDistribution & rhs)

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisSprayFunctionBasedDistribution::m_d
private

Definition at line 81 of file KisSprayRandomDistributions.h.


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