1#include <catch2/catch_test_macros.hpp>
2#include <unittestUtils.hpp>
4#include <Core/Random/RandomPointSet.hpp>
8 for ( size_t i = 0; i < 5; ++i ) { \
9 REQUIRE( isApprox( seq( i ), seq_verif[i] ) ); \
13 for ( size_t i = 0; i < 5; ++i ) { \
15 REQUIRE( isApprox( v[0], seq_verif[i].first ) ); \
16 REQUIRE( isApprox( v[1], seq_verif[i].second ) ); \
19TEST_CASE(
"Core/Random/RandomPointSet",
"[unittests][Core][Core/Random][PointSet]" ) {
20 SECTION(
"Fibonacci sequence" ) {
22 0.61803398874989479150343640867504_ra,
23 1.2360679774997895830068728173501_ra,
24 1.8541019662496844855326116885408_ra,
25 2.4721359549995791660137456347002_ra };
28 REQUIRE( seq.range() == 5 );
32 SECTION(
"VanDerCorput sequence" ) {
38 SECTION(
"Fibonacci point set" ) {
41 { 0.61803398874989479150343640867504_ra, 1_ra / 5_ra },
42 { 1.2360679774997895830068728173501_ra, 2_ra / 5_ra },
43 { 1.8541019662496844855326116885408_ra, 3_ra / 5_ra },
44 { 2.4721359549995791660137456347002_ra, 4_ra / 5_ra } };
49 SECTION(
"Hammersley point set" ) {
52 { 1_ra / 5_ra, 0.5_ra },
53 { 2_ra / 5_ra, 0.25_ra },
54 { 3_ra / 5_ra, 0.75_ra },
55 { 4_ra / 5_ra, 0.125_ra } };
61 SECTION(
"MersenneTwister point set" ) {
66 0.84426574425659828282419994138763_ra },
67 { 0.85794561998982987738315841852454_ra, 0.84725173738433123826752080276492_ra },
68 { 0.62356369649610832173181051985011_ra, 0.38438170837375662536317122430773_ra },
69 { 0.29753460535723419422282631785492_ra, 0.056712975933163663200264892338964_ra },
70 { 0.27265629474158931122573790162278_ra, 0.47766511174464632016878340436961_ra } };
75 0.59284460544586181640625_ra },
76 { 0.71518933773040771484375_ra, 0.844265758991241455078125_ra },
77 { 0.602763354778289794921875_ra, 0.857945621013641357421875_ra },
78 { 0.544883191585540771484375_ra, 0.847251713275909423828125_ra },
79 { 0.4236547946929931640625_ra, 0.623563706874847412109375_ra } };
85 SECTION(
"SphericalPointSet point set (Hammersley)" ) {
88 { 0.30901699437494745126286943559535_ra, 0.95105651629515353118193843329209_ra },
89 { -0.70062926922203661028731858095853_ra, 0.50903696045512725198989301134134_ra },
90 { -0.70062926922203672130962104347418_ra, -0.50903696045512702994528808631003_ra },
91 { 0.20439552950218897731105016646325_ra, -0.62906475622110624712490789534058_ra } };
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.
Random point set utilities.
1D Van der Corput sequence only implemented for 32bits floats (converted out to Scalar)