PointSampler library (C++)
Loading...
Searching...
No Matches
poisson_disk_sampling.hpp File Reference

Go to the source code of this file.

Classes

struct  ps::GridND< T, N >
 

Namespaces

namespace  ps
 

Functions

template<typename T , size_t N, typename ScaleFn >
bool ps::in_neighborhood (const GridND< T, N > &grid, const Point< T, N > &p, T base_min_dist, const std::array< std::pair< T, T >, N > &ranges, ScaleFn scale_fn)
 
template<typename T , size_t N>
Point< T, Nps::generate_random_point_around (const Point< T, N > &center, T base_min_dist, std::mt19937 &gen, std::function< T(const Point< T, N > &)> scale_fn)
 
template<typename T , size_t N, typename ScaleFn >
std::vector< Point< T, N > > ps::poisson_disk_sampling (size_t count, const std::array< std::pair< T, T >, N > &ranges, T base_min_dist, ScaleFn scale_fn, std::optional< unsigned int > seed=std::nullopt, size_t new_points_attempts=30)
 Generate a set of Poisson disk samples in N-dimensional space, possibly with a warped metric.
 
template<typename T , size_t N>
std::vector< Point< T, N > > ps::poisson_disk_sampling_uniform (size_t count, const std::array< std::pair< T, T >, N > &ranges, T base_min_dist, std::optional< unsigned int > seed=std::nullopt, size_t new_points_attempts=30)
 Generate uniformly distributed Poisson disk samples in N-dimensional space.
 
template<typename T , size_t N, typename RadiusGen >
std::vector< Point< T, N > > ps::poisson_disk_sampling_distance_distribution (size_t n_points, const std::array< std::pair< T, T >, N > &axis_ranges, RadiusGen &&radius_gen, std::optional< unsigned int > seed=std::nullopt, size_t max_attempts=30)
 Generate random points with a variable-radius Poisson disk sampling.
 
template<typename T , size_t N>
std::vector< Point< T, N > > ps::poisson_disk_sampling_power_law (size_t n_points, T dist_min, T dist_max, T alpha, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt, size_t max_attempts=30)
 Generate N-dimensional points using Poisson disk sampling with a power-law radius distribution.
 
template<typename T , size_t N>
std::vector< Point< T, N > > ps::poisson_disk_sampling_weibull (size_t n_points, T lambda, T k, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt, size_t max_attempts=30)
 Generate N-dimensional points using Poisson disk sampling with a Weibull-distributed radius.
 
template<typename T , size_t N>
std::vector< Point< T, N > > ps::poisson_disk_sampling_weibull (size_t n_points, T lambda, T k, T dist_min, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt, size_t max_attempts=30)
 Poisson disk sampling in N dimensions with radii drawn from a Weibull distribution, enforcing a minimum exclusion distance.