MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ generate_samples()

std::vector< SampleResult > MayaFlux::Kinesis::generate_samples ( SpatialDistribution  distribution,
size_t  count,
const SamplerBounds bounds,
Kinesis::Stochastic::Stochastic rng 
)

Generate a batch of spatially distributed samples.

Parameters
distributionSpatial distribution algorithm to apply
countNumber of samples to generate
boundsSpatial domain
rngStochastic engine (caller owns; enables reproducible sequences)
Returns
SampleResult vector of length <= count (exact for all deterministic modes)

All geometry is computed here. Callers convert SampleResult to their concrete vertex type via the projection helpers below.

Definition at line 328 of file VertexSampler.cpp.

333{
334 if (count == 0 || dist == SpatialDistribution::EMPTY) {
335 return {};
336 }
337
338 switch (dist) {
339 case SpatialDistribution::PERLIN_FIELD:
340 return sample_perlin_field(bounds, count, rng);
341 case SpatialDistribution::BROWNIAN_PATH:
342 return sample_brownian_path(bounds, count, rng);
343 case SpatialDistribution::STRATIFIED_CUBE:
344 return sample_stratified_cube(bounds, count, rng);
345 case SpatialDistribution::SPLINE_PATH:
346 return sample_spline_path(bounds, count, rng);
347 case SpatialDistribution::FIBONACCI_SPHERE:
348 return sample_fibonacci_sphere(bounds, count);
349 case SpatialDistribution::FIBONACCI_SPIRAL:
350 return sample_fibonacci_spiral(bounds, count);
351 case SpatialDistribution::TORUS:
352 return sample_torus(bounds, count);
353 case SpatialDistribution::LISSAJOUS:
354 return sample_lissajous(bounds, count);
355
356 default: {
357 std::vector<SampleResult> out;
358 out.reserve(count);
359 for (size_t i = 0; i < count; ++i) {
360 out.push_back(generate_sample_at(dist, i, count, bounds, rng));
361 }
362 return out;
363 }
364 }
365}
Eigen::Index count

References BROWNIAN_PATH, count, EMPTY, FIBONACCI_SPHERE, FIBONACCI_SPIRAL, generate_sample_at(), LISSAJOUS, PERLIN_FIELD, SPLINE_PATH, STRATIFIED_CUBE, and TORUS.

Referenced by MayaFlux::Nodes::Network::PointCloudNetwork::generate_initial_positions(), and MayaFlux::Nodes::Network::ParticleNetwork::generate_initial_vertices().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: