Initial commit
This commit is contained in:
commit
7cdac8ded9
45 changed files with 7275 additions and 0 deletions
101
BlueNoise/README.txt
Normal file
101
BlueNoise/README.txt
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
PDSample - Poisson-Disk sample set generation
|
||||
Daniel Dunbar, daniel@zuster.org
|
||||
----
|
||||
|
||||
|
||||
Overview
|
||||
--
|
||||
PDSample generates Poisson-disk sampling sets in the domain [-1,1]^2
|
||||
using a variety of methods. See "A Spatial Data Structure for Fast
|
||||
Poisson-Disk Sample Generation", in Proc' of SIGGRAPH 2006 for more
|
||||
information.
|
||||
|
||||
|
||||
Building
|
||||
---
|
||||
The code should be portable to any platform with 32-bit float's and int's.
|
||||
|
||||
Windows: There is an included PDSample.sln for MSVS version 7.
|
||||
Unix: Type 'make' and hope for the best.
|
||||
|
||||
|
||||
Usage
|
||||
---
|
||||
PDSample [-m] [-t] [-r <relax count=0>] [-M <multiplier=1>]
|
||||
[-N <minMaxThrows=1000>] <method> <radius> <output>
|
||||
|
||||
Options
|
||||
--
|
||||
o -t
|
||||
Uses tiled (toroidal) domain for supporting samplers. The resulting point
|
||||
set will be suitable for tiling repeatedly in the x and y directions.
|
||||
|
||||
o -m
|
||||
Maximize the resulting point set. For samplers which do not already produce
|
||||
a maximal point set then this will use the Boundary sampling method to
|
||||
ensure the resulting point set is maximal.
|
||||
|
||||
o -r <relax count>
|
||||
Apply the specified number of relaxations to the resulting point set. This
|
||||
requires that qvoronoi be in the path.
|
||||
|
||||
o -M <multiplier>
|
||||
For DartThrowing and BestCandidate methods this determines the factor to
|
||||
multiply the current number of points by to determine how many samples to
|
||||
take before exiting (DartThrowing) or accepting the best candidate
|
||||
(BestCandidate).
|
||||
|
||||
o -N <minMaxThrows>
|
||||
This specifies a minimum number of samples that will be taken for the
|
||||
DartThrowing sampler. See below.
|
||||
|
||||
|
||||
Available Samplers (for method argument)
|
||||
--
|
||||
o DartThrowing
|
||||
Standard dart throwing. On each iteration the DartThrowing sampler will
|
||||
try min(N*multiplier,minMaxThrows) samples before termination. Note that
|
||||
for regular dart throwing where simply a maximum number of throws is used
|
||||
to determine the termination point, the multiplier should be set to 0.
|
||||
|
||||
o BestCandidate
|
||||
Mitchell's Best Candidate algorithm. Uses the multiplier argument.
|
||||
|
||||
o Boundary
|
||||
Dart throwing by maximizing boundaries.
|
||||
|
||||
o Pure
|
||||
Dart throwing using scalloped sectors.
|
||||
o LinearPure
|
||||
Dart throwing using scalloped sectors but without sampling regions according
|
||||
to their probability of being hit.
|
||||
|
||||
o Penrose
|
||||
Ostromoukhov et al.'s sampling method using their quasisampler_prototype.h
|
||||
|
||||
o Uniform
|
||||
Random point generation. The number of samples to take is calculated as
|
||||
.75/radius^2 to approximately match the density of Poisson-disk sampling.
|
||||
|
||||
|
||||
Output format
|
||||
--
|
||||
Point sets are output in a trivial binary format. The format is not intended
|
||||
for distribution and does not encode the endianness of the generating platform.
|
||||
|
||||
The format matches the pseudo-C struct below:
|
||||
struct {
|
||||
int N; // number of points
|
||||
float t; // generation time
|
||||
float r; // radius used in generation
|
||||
int isTiled; // flag for if the set is tileable
|
||||
float points[N][2];
|
||||
};
|
||||
|
||||
|
||||
Acknowledgments
|
||||
--
|
||||
Thanks to Ares Lagae for comments on a preliminary release of the code,
|
||||
Ostromoukhov et al. for making available their quasisampler implementation,
|
||||
as well as Takuji Nishimura and Makoto Matsumoto for their Mersenne
|
||||
Twister random number generator.
|
||||
Loading…
Add table
Add a link
Reference in a new issue