LdsGen 1.2.6
Loading...
Searching...
No Matches
Public Member Functions | List of all members
ldsgen::Disk Class Reference

Disk sequence generator. More...

#include <lds.hpp>

Inheritance diagram for ldsgen::Disk:
[legend]
Collaboration diagram for ldsgen::Disk:
[legend]

Public Member Functions

 Disk (const unsigned long base0, const unsigned long base1)
 Construct a new Disk object.
 
auto value_at (unsigned long n) const -> std::array< double, 2 >
 Evaluate the point in the unit disk at a given index (pure, no state change)
 
- Public Member Functions inherited from ldsgen::GeneratorIterable< Disk, std::array< double, 2 > >
auto begin () -> GeneratorIterator< Disk, std::array< double, 2 > >
 Get iterator to beginning.
 
auto end () const -> GeneratorIterator< Disk, std::array< double, 2 > >
 Get iterator to end (infinite sequence)
 
- Public Member Functions inherited from ldsgen::GeneratorBase< Derived, Value >
auto pop () -> Value
 Generate the next value in the sequence (advances state).
 
auto peek () -> Value
 Peek at the next value without advancing state.
 
auto skip (unsigned int n) -> void
 Skip n values in the sequence.
 
auto reseed (const unsigned long &seed) -> void
 Reset the generator to a specific seed value.
 
auto get_index () const -> unsigned long
 Get current index in the sequence.
 

Additional Inherited Members

- Protected Attributes inherited from ldsgen::GeneratorBase< Derived, Value >
std::atomic< unsigned long > count_ {0}
 Current sequence index (single source of state)
 

Detailed Description

Disk sequence generator.

The Disk class is a sequence generator that generates points in a 2-dimensional space using the Disk sequence. The Disk sequence is a low-discrepancy sequence that is commonly used in quasi-Monte Carlo methods. It is generated by iterating over two different bases and calculating the fractional parts of the numbers in those bases. The Disk class keeps track of the current count and bases, and provides a pop() method that returns the next point in the sequence as a std::array<double, 2>.

*     Unit Disk:
*         *****
*      ***     ***
*    **         **
*   *             *
*   *             *  More evenly
*   *             *  distributed
*    **         **   than random
*      ***     ***
*         *****
* 

Constructor & Destructor Documentation

◆ Disk()

ldsgen::Disk::Disk ( const unsigned long  base0,
const unsigned long  base1 
)
inline

Construct a new Disk object.

Constructs a Disk sequence generator with the specified bases for the two dimensions.

Parameters
[in]base0the base for the first dimension (angle)
[in]base1the base for the second dimension (radius)

Member Function Documentation

◆ value_at()

auto ldsgen::Disk::value_at ( unsigned long  n) const -> std::array<double, 2>
inline

Evaluate the point in the unit disk at a given index (pure, no state change)

\( \theta = 2\pi \cdot \phi_{b_0}(n), \; r = \sqrt{\phi_{b_1}(n)} \) \( P(n) = \bigl(r\cos\theta,\; r\sin\theta\bigr) \)

Parameters
[in]nThe sequence index.
Returns
The point in the unit disk for index n.

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