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

Class that can generate normally distributed values. For efficiency, the values will be in the range [0..standardDeviation*5]. More...

#include <KisSprayRandomDistributions.h>

+ Inheritance diagram for KisSprayNormalDistribution:

Public Member Functions

 KisSprayNormalDistribution ()
 Construct an invalid KisSprayNormalDistribution.
 
 KisSprayNormalDistribution (double mean, double standardDeviation)
 Construct a new normal distribution.
 
- Public Member Functions inherited from KisSprayFunctionBasedDistribution
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 ()
 

Additional Inherited Members

- Protected Member Functions inherited from KisSprayFunctionBasedDistribution
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.
 

Detailed Description

Class that can generate normally distributed values. For efficiency, the values will be in the range [0..standardDeviation*5].

Definition at line 130 of file KisSprayRandomDistributions.h.

Constructor & Destructor Documentation

◆ KisSprayNormalDistribution() [1/2]

KisSprayNormalDistribution::KisSprayNormalDistribution ( )

Construct an invalid KisSprayNormalDistribution.

Definition at line 230 of file KisSprayRandomDistributions.cpp.

231{}

◆ KisSprayNormalDistribution() [2/2]

KisSprayNormalDistribution::KisSprayNormalDistribution ( double mean,
double standardDeviation )

Construct a new normal distribution.

Parameters
meanWhere the "peak" of the distribution should lie or how much the distribution is shifted left or right
standardDeviationHow spread should the distribution be

Definition at line 233 of file KisSprayRandomDistributions.cpp.

234{
235 KIS_SAFE_ASSERT_RECOVER_RETURN(standardDeviation > 0.0);
236
237 const double m_c1 = 1.0 / (standardDeviation * std::sqrt(2.0 * M_PI));
238 const double m_c2 = 2.0 * standardDeviation * standardDeviation;
239 KisSprayFunctionBasedDistribution::initialize(1000, 0.0, standardDeviation * 5.0,
240 [mean, m_c1, m_c2](double x)
241 {
242 const double shiftedX = x - mean;
243 return m_c1 * std::exp(-(shiftedX * shiftedX / m_c2));
244 }
245 );
246}
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 expl...
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
#define M_PI
Definition kis_global.h:111

References KisSprayFunctionBasedDistribution::initialize(), KIS_SAFE_ASSERT_RECOVER_RETURN, and M_PI.


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