2#include <Core/RaCore.hpp>
23Scalar
constexpr sqrtNewtonRaphsonHelper( Scalar x, Scalar curr, Scalar prev ) {
24 return curr == prev ? curr : sqrtNewtonRaphsonHelper( x, 0.5_ra * ( curr + x / curr ), curr );
26Scalar
constexpr sqrtConstExpr( Scalar x ) {
27 return sqrtNewtonRaphsonHelper( x, x, 0_ra );
38 static constexpr Scalar phi = ( 1_ra + internal::sqrtConstExpr( 5_ra ) ) / 2_ra;
52 Scalar operator()(
size_t i );
59 Scalar operator()(
unsigned int bits );
81 Ra::Core::Vector2 operator()(
size_t i );
103 Ra::Core::Vector2 operator()(
size_t i );
125 Ra::Core::Vector2 operator()(
size_t );
133template <
class Po
intSet>
137 Ra::Core::Vector3 projectOnSphere(
const Ra::Core::Vector2&& pt );
150 Ra::Core::Vector3 operator()(
size_t i );
156template <
class Po
intSet>
158 Scalar theta =
std::acos( 2 * pt[1] - 1 );
159 Scalar phi = 2_ra * Scalar( M_PI ) * pt[0];
165template <
class Po
intSet>
166SphericalPointSet<PointSet>::SphericalPointSet(
size_t n ) : p( n ) {}
168template <
class Po
intSet>
169size_t SphericalPointSet<PointSet>::range() {
173template <
class Po
intSet>
174Ra::Core::Vector3 SphericalPointSet<PointSet>::operator()(
size_t i ) {
175 return projectOnSphere( p( i ) );
Implements the 2D fibonacci Point set points follow the FibonacciSequence (i, N) => [i / phi,...
Implements the fibonacci sequence i --> i/phi where phi = (1 + sqrt(5)) / 2.
Map a [0, 1)^2 point set on the unit sphere.
hepler function to manage enum as underlying types in VariableSet
1D Van der Corput sequence only implemented for 32bits floats (converted out to Scalar)