Create a rng.sampling.shape package in the sampling module to contain work-in-progress samplers for shapes.
- UnitSphereSampler (N-surface) 
- UnitBallSampler (N-volume)
- UnitSimplexSampler (N-surface)
- LineSampler (N-dimension points on a line segment or polyline)
- TriangleSampler (N-dimension points within a triangle in a 2D plane)
- TetrahedronSampler (3D points inside a tetrahedron)
- SurfaceSampler (ND points on a triangulated surface) 
- VolumeSampler (3D points inside a volume composed of tetrahedrons)
- UnitCubeSampler (N-volume)
 The UnitSphereSampler can be deprecated and a new version created to use a factory method to create the sampler (allowing optimisation for low dimensions).
 The SurfaceSampler would be a composite sampler. For sampling a surface the TriangleSampler can be combined with the AliasMethodSamplerDiscreteSampler. The surface should be triangulated. The area of each triangle is used to create a distribution of which triangle to pick using the alias method. A sample is then taken from the chosen triangle.
Shape geometry will not be validated beyond basic testing for non-finite values of input coordinates. Validation of shapes could potentially be done by creating a commons-geometry-sampling module in the commons geometry project.