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

Class that can generate randomly distributed values in the range [0..1] that follow a distribution that clusters the values towards 0 or 1, for polar coordinates distance. More...

#include <KisSprayRandomDistributions.h>

+ Inheritance diagram for KisSprayClusterBasedDistributionPolarDistance:

Public Member Functions

 KisSprayClusterBasedDistributionPolarDistance ()
 
 KisSprayClusterBasedDistributionPolarDistance (double clusteringAmount)
 
- 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 randomly distributed values in the range [0..1] that follow a distribution that clusters the values towards 0 or 1, for polar coordinates distance.

See also
KisSprayClusterBasedDistribution

Definition at line 193 of file KisSprayRandomDistributions.h.

Constructor & Destructor Documentation

◆ KisSprayClusterBasedDistributionPolarDistance() [1/2]

KisSprayClusterBasedDistributionPolarDistance::KisSprayClusterBasedDistributionPolarDistance ( )

Definition at line 303 of file KisSprayRandomDistributions.cpp.

304{}

◆ KisSprayClusterBasedDistributionPolarDistance() [2/2]

KisSprayClusterBasedDistributionPolarDistance::KisSprayClusterBasedDistributionPolarDistance ( double clusteringAmount)
explicit

Definition at line 306 of file KisSprayRandomDistributions.cpp.

307{
308 KIS_SAFE_ASSERT_RECOVER_RETURN(clusteringAmount >= -100.0 && clusteringAmount <= 100.0);
309
310 if (clusteringAmount == 0.0) {
311 // Uniform distribution basically
313 [](double x)
314 {
315 return 2.0 * x;
316 }
317 );
318 return;
319 }
320 const double sigma = 1.0 / std::abs(clusteringAmount);
321 const double m_c1 = 2.0 * sigma * sigma;
322 if (clusteringAmount < 0.0) {
323 KisSprayFunctionBasedDistribution::initialize(1000, 1.0 - std::min(1.0, sigma * 4.0), 1.0,
324 [m_c1](double x)
325 {
326 const double xx = 1.0 - x;
327 return 2.0 * x * std::exp(-(xx * xx / m_c1));
328 }
329 );
330 } else {
331 KisSprayFunctionBasedDistribution::initialize(1000, 0.0, std::min(1.0, sigma * 4.0),
332 [m_c1](double x)
333 {
334 return 2.0 * x * std::exp(-(x * x / m_c1));
335 }
336 );
337 }
338}
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

References KisSprayFunctionBasedDistribution::initialize(), and KIS_SAFE_ASSERT_RECOVER_RETURN.


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