8FibonacciSequence::FibonacciSequence(
size_t number ) : n {
std::max(
size_t( 5 ), number ) } {}
10size_t FibonacciSequence::range() {
13Scalar FibonacciSequence::operator()(
size_t i ) {
14 return Scalar( i ) / phi;
17Scalar VanDerCorputSequence::operator()(
unsigned int bits ) {
18 bits = ( bits << 16u ) | ( bits >> 16u );
19 bits = ( ( bits & 0x55555555u ) << 1u ) | ( ( bits & 0xAAAAAAAAu ) >> 1u );
20 bits = ( ( bits & 0x33333333u ) << 2u ) | ( ( bits & 0xCCCCCCCCu ) >> 2u );
21 bits = ( ( bits & 0x0F0F0F0Fu ) << 4u ) | ( ( bits & 0xF0F0F0F0u ) >> 4u );
22 bits = ( ( bits & 0x00FF00FFu ) << 8u ) | ( ( bits & 0xFF00FF00u ) >> 8u );
23 return Scalar(
float( bits ) * 2.3283064365386963e-10_ra );
26FibonacciPointSet::FibonacciPointSet(
size_t n ) : seq( n ) {}
28size_t FibonacciPointSet::range() {
31Ra::Core::Vector2 FibonacciPointSet::operator()(
size_t i ) {
32 return { seq( i ), Scalar( i ) / Scalar( range() ) };
35HammersleyPointSet::HammersleyPointSet(
size_t number ) : n( number ) {}
37size_t HammersleyPointSet::range() {
41Ra::Core::Vector2 HammersleyPointSet::operator()(
size_t i ) {
42 return { Scalar( i ) / Scalar( range() ), seq( i ) };
45MersenneTwisterPointSet::MersenneTwisterPointSet(
size_t number ) :
46 gen( 0 ), seq( 0._ra, 1._ra ), n( number ) {}
48size_t MersenneTwisterPointSet::range() {
51Ra::Core::Vector2 MersenneTwisterPointSet::operator()(
size_t ) {
52 return { seq( gen ), seq( gen ) };