Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAlgebra2D::HaltonSequenceGenerator Class Reference

a simple class to generate Halton sequence More...

#include <kis_algebra_2d.h>

Public Member Functions

qreal currentValue () const
 
int currentValue (int maxRange) const
 
qreal generate ()
 
int generate (int maxRange)
 
 HaltonSequenceGenerator (int base)
 
void step ()
 

Private Member Functions

void generationStep ()
 

Private Attributes

const int m_base = 0
 
int m_d = 1
 
int m_n = 0
 

Detailed Description

a simple class to generate Halton sequence

This sequence of numbers can be used to sample areas in somewhat uniform way. See Wikipedia for more info:

https://en.wikipedia.org/wiki/Halton_sequence

Definition at line 1103 of file kis_algebra_2d.h.

Constructor & Destructor Documentation

◆ HaltonSequenceGenerator()

KisAlgebra2D::HaltonSequenceGenerator::HaltonSequenceGenerator ( int base)
inline

Definition at line 1106 of file kis_algebra_2d.h.

1107 : m_base(base)
1108 {
1109 }

Member Function Documentation

◆ currentValue() [1/2]

qreal KisAlgebra2D::HaltonSequenceGenerator::currentValue ( ) const
inline

Definition at line 1129 of file kis_algebra_2d.h.

References m_d, and m_n.

◆ currentValue() [2/2]

int KisAlgebra2D::HaltonSequenceGenerator::currentValue ( int maxRange) const
inline

Definition at line 1125 of file kis_algebra_2d.h.

1125 {
1126 return (m_n * maxRange + m_d / 2) / m_d;
1127 }

References m_d, and m_n.

◆ generate() [1/2]

qreal KisAlgebra2D::HaltonSequenceGenerator::generate ( )
inline

Definition at line 1116 of file kis_algebra_2d.h.

1116 {
1118 return qreal(m_n) / m_d;
1119 }

References generationStep(), m_d, and m_n.

◆ generate() [2/2]

int KisAlgebra2D::HaltonSequenceGenerator::generate ( int maxRange)
inline

Definition at line 1111 of file kis_algebra_2d.h.

1111 {
1113 return (m_n * maxRange + m_d / 2) / m_d;
1114 }

References generationStep(), m_d, and m_n.

◆ generationStep()

void KisAlgebra2D::HaltonSequenceGenerator::generationStep ( )
inlineprivate

Definition at line 1134 of file kis_algebra_2d.h.

1134 {
1135 int x = m_d - m_n;
1136
1137 if (x == 1) {
1138 m_n = 1;
1139 m_d *= m_base;
1140 } else {
1141 int y = m_d / m_base;
1142 while (x <= y) {
1143 y /= m_base;
1144 }
1145 m_n = (m_base + 1) * y - x;
1146 }
1147 }

References m_base, m_d, and m_n.

◆ step()

void KisAlgebra2D::HaltonSequenceGenerator::step ( )
inline

Definition at line 1121 of file kis_algebra_2d.h.

1121 {
1123 }

References generationStep().

Member Data Documentation

◆ m_base

const int KisAlgebra2D::HaltonSequenceGenerator::m_base = 0
private

Definition at line 1152 of file kis_algebra_2d.h.

◆ m_d

int KisAlgebra2D::HaltonSequenceGenerator::m_d = 1
private

Definition at line 1151 of file kis_algebra_2d.h.

◆ m_n

int KisAlgebra2D::HaltonSequenceGenerator::m_n = 0
private

Definition at line 1150 of file kis_algebra_2d.h.


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