18 #ifndef PIC_POINT_SAMPLERS_SAMPLER_BRIDSON_HPP 19 #define PIC_POINT_SAMPLERS_SAMPLER_BRIDSON_HPP 23 #include "../util/math.hpp" 24 #include "../util/vec.hpp" 35 template<
unsigned int N>
39 float radius_sq = radius * radius;
41 for(
unsigned int i = 0; i < samples.size(); i++) {
57 template<
unsigned int N>
71 std::vector< Vec<N, float> > vecSamples;
72 std::vector<int> activeList;
74 vecSamples.push_back(x0);
75 activeList.push_back(0);
79 while(!activeList.empty()) {
80 int i = (*m)() % activeList.size();
82 int ind = activeList[i];
84 bool bCheckSuccess =
false;
91 Vec<N, float> x = annulusSampling<N>(m, vecSamples[ind], radius);
97 vecSamples.push_back(x);
98 int value = int(vecSamples.size()) - 1;
100 activeList.push_back(value);
102 bCheckSuccess =
true;
108 bFlag = (j < kSamples) && (!bCheckSuccess);
112 if(activeList.size() > 1) {
113 activeList[i] = activeList.back();
114 activeList.pop_back();
116 activeList.pop_back();
121 for(
unsigned int i = 0; i < vecSamples.size(); i++) {
124 for(
unsigned int k = 0; k < N; k++) {
125 samples.push_back(x[k]);
bool checkNeighborsBruteForce(std::vector< Vec< N, float > > &samples, Vec< N, float > x, float radius)
checkNeighborsBruteForce
Definition: sampler_bridson.hpp:36
PIC_INLINE bool insideVecBBox(const Vec< N, float > &sample)
insideVecBBox
Definition: vec.hpp:692
Definition: bilateral_separation.hpp:25
The Vec class.
Definition: vec.hpp:35
void getBridsonSamples(std::mt19937 *m, float radius, std::vector< float > &samples, int kSamples=30)
getBridsonSamples
Definition: sampler_bridson.hpp:58
T distanceSq(Vec< N, T > &x)
distanceSq
Definition: vec.hpp:305