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

Circle sequence generator. More...

#include <lds.hpp>

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

Public Member Functions

 Circle (const unsigned long base)
 Construct a new Circle object.
 
auto value_at (unsigned long n) const -> std::array< double, 2 >
 Evaluate the point on the unit circle at a given index (pure, no state change)
 
- Public Member Functions inherited from ldsgen::GeneratorIterable< Circle, std::array< double, 2 > >
auto begin () -> GeneratorIterator< Circle, std::array< double, 2 > >
 Get iterator to beginning.
 
auto end () const -> GeneratorIterator< Circle, 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

Circle sequence generator.

The Circle class is a sequence generator that generates points on a unit circle using the Van der Corput sequence. It uses the VdCorput class to generate the sequence values and maps them to points on the unit circle. The pop() method returns the next point on the unit circle as a std::array<double, 2>, where the first element represents the x-coordinate and the second element represents the y-coordinate of the point. The reseed() method is used to reset the state of the sequence generator to a specific seed value.

*     Unit Circle:
*         (0,1)
*           *
*    (-1,0) *   * (1,0)
*           *
*        (0,-1)
*
*     Points distributed more evenly
*     than random sampling
* 

Constructor & Destructor Documentation

◆ Circle()

ldsgen::Circle::Circle ( const unsigned long  base)
inlineexplicit

Construct a new Circle object.

Constructs a Circle sequence generator with the specified base for generating the Van der Corput sequence, which is then mapped to points on the unit circle.

Parameters
[in]basethe base for the Van der Corput sequence generator

Member Function Documentation

◆ value_at()

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

Evaluate the point on the unit circle at a given index (pure, no state change)

\( \theta = 2\pi \cdot \phi_b(n), \quad P(n) = (\cos\theta,\; \sin\theta) \)

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

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