upxo.statops.sampling module

https://www.labri.fr/perso/nrougier/from-python-to-numpy/code/

https://pypi.org/project/poissonDiskSampling/

bridson1 offers consant density Poisson disk sampling IMPLEMENTED

bridson2 also offers consant density Poisson disk sampling TO BE IMPLEMENTED

bridson3 also offers consant density Poisson disk sampling TO BE IMPLEMENTED https://github.com/emulbreh/bridson

bridson4 offers variable density Poisson disk sampling TO BE IMPLEMENTED https://pypi.org/project/poissonDiskSampling/

dart1 offers constant density dart sampling

https://www.labri.fr/perso/nrougier/from-python-to-numpy/code/DART_sampling_numpy.py

upxo.statops.sampling.random_points_around(p, num, radius)

Generate num random points around p within the annular region (radius, 2*radius).

upxo.statops.sampling.in_limits(p, width, height)

Check if points are within bounds (vectorized for Numba).

upxo.statops.sampling.in_neighborhood(p, P, M, cellsize, rows, cols, squared_radius)

Vectorized check to see if a point is too close to any existing points.

upxo.statops.sampling.add_point(p, P, M, active_points, active_count, cellsize)

Add a valid point to the active list and update the grid.

upxo.statops.sampling.bridson_uniform_density(width=1.0, height=1.0, radius=0.01, k=10)[source]

Fully optimized Bridson’s Poisson Disk Sampling using Numba for acceleration.

upxo.statops.sampling.bridson_uniform_density_old2(width=1.0, height=1.0, radius=0.01, k=10)[source]

Highly optimized version of Bridson’s Poisson Disk Sampling.

upxo.statops.sampling.bridson_uniform_density_old1(width=1.0, height=1.0, radius=0.01, k=10)[source]

Bridson’s Poisson Disk Sampling for uniform distribution of points. Optimized version with NumPy-based distance calculations.

upxo.statops.sampling.bridson_uniform_density_old(width=1.0, height=1.0, radius=0.01, k=10)[source]

Bridson uniform density old.

upxo.statops.sampling.bridson_variable_density()[source]

Bridson variable density.

upxo.statops.sampling.dart(width=1.0, height=1.0, radius=0.025, k=30)

Optimized Dart Throwing with Numba (manual distance checks). Uses a pre-allocated NumPy array for ‘points’ instead of a list.

upxo.statops.sampling.dart_old1(width=1.0, height=1.0, radius=0.025, k=30)[source]

Optimized Dart Throwing algorithm for generating a Poisson disk sampling.

Uses a KDTree for efficient nearest-neighbor searches, and avoids the large distance matrix calculation of the original.

Parameters:
  • width (float) – Width of the sampling area.

  • height (float) – Height of the sampling area.

  • radius (float) – Minimum distance between points.

  • k (int) – Maximum number of attempts to find a valid point before giving up on adding a new point from the candidate list.

Returns:

A list of [x, y] coordinates representing the sampled points.

Return type:

list

upxo.statops.sampling.dart_old(width=1.0, height=1.0, radius=0.025, k=30)[source]

Dart old.