Class TetrahedronSampler
java.lang.Object
org.apache.commons.rng.sampling.shape.TetrahedronSampler
- All Implemented Interfaces:
ObjectSampler<double[]>, SharedStateObjectSampler<double[]>, SharedStateSampler<SharedStateObjectSampler<double[]>>
Generate points uniformly distributed within a
tetrahedron.
-
Uses the algorithm described in:
Rocchini, C. and Cignoni, P. (2001)
Generating Random Points in a Tetrahedron.
Journal of Graphics Tools 5(4), pp. 9-12.
Sampling uses:
- Since:
- 1.4
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic TetrahedronSamplerof(UniformRandomProvider rng, double[] a, double[] b, double[] c, double[] d) Create a tetrahedron sampler with verticesa,b,candd.double[]sample()Create an object sample.Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ObjectSampler
samples, samples
-
Method Details
-
sample
Description copied from interface:ObjectSamplerCreate an object sample.- Specified by:
samplein interfaceObjectSampler<double[]>- Returns:
- a random Cartesian point within the tetrahedron.
-
withUniformRandomProvider
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.- Specified by:
withUniformRandomProviderin interfaceSharedStateSampler<SharedStateObjectSampler<double[]>>- Parameters:
rng- Generator of uniformly distributed random numbers.- Returns:
- the sampler
-
of
public static TetrahedronSampler of(UniformRandomProvider rng, double[] a, double[] b, double[] c, double[] d) Create a tetrahedron sampler with verticesa,b,candd. Sampled points are uniformly distributed within the tetrahedron.No test for a volume is performed. If the vertices are coplanar the sampling distribution is undefined.
- Parameters:
rng- Source of randomness.a- The first vertex.b- The second vertex.c- The third vertex.d- The fourth vertex.- Returns:
- the sampler
- Throws:
IllegalArgumentException- If the vertices do not have length 3; or vertices have non-finite coordinates
-