public class QuickHull3DTest extends Object
java quickhull3d.QuickHull3DTestwill cause QuickHull3D to be tested on a number of randomly choosen input sets, with degenerate points added near the edges and vertics of the convex hull.
The command
java quickhull3d.QuickHull3DTest -timingwill cause timing information to be produced instead.
Constructor and Description |
---|
QuickHull3DTest()
Creates a testing object.
|
Modifier and Type | Method and Description |
---|---|
void |
explicitAndRandomTests()
Runs a set of explicit and random tests on QuickHull3D,
and prints
Passed to System.out if all is well. |
boolean |
faceIndicesEqual(int[] indices1,
int[] indices2)
Returns true if two face index sets are equal,
modulo a cyclical permuation.
|
static void |
main(String[] args)
Runs a set of tests on the QuickHull3D class, and
prints
Passed if all is well. |
double[] |
randomCubedPoints(int num,
double range,
double max)
Returns the coordinates for
num points whose x, y, and
z values are each randomly chosen to lie within a specified
range, and then clipped to a maximum absolute
value. |
double[] |
randomDegeneratePoints(int num,
int dimen)
Returns the coordinates for
num randomly
chosen points which are degenerate which respect
to the specified dimensionality. |
double[] |
randomGridPoints(int gridSize,
double width)
Returns randomly shuffled coordinates for points on a
three-dimensional grid, with a presecribed width between each point.
|
double[] |
randomPoints(int num,
double range)
Returns the coordinates for
num points whose x, y, and
z values are randomly chosen within a given range. |
double[] |
randomSphericalPoints(int num,
double radius)
Returns the coordinates for
num points whose x, y, and
z values are randomly chosen to lie within a sphere. |
void |
timingTests()
Runs timing tests on QuickHull3D, and prints
the results to System.out.
|
public boolean faceIndicesEqual(int[] indices1, int[] indices2)
indices1
- index set for first faceindices2
- index set for second facepublic double[] randomPoints(int num, double range)
num
points whose x, y, and
z values are randomly chosen within a given range.num
- number of points to producerange
- coordinate values will lie between -range and rangepublic double[] randomDegeneratePoints(int num, int dimen)
num
randomly
chosen points which are degenerate which respect
to the specified dimensionality.num
- number of points to producedimen
- dimensionality of degeneracy: 0 = coincident,
1 = colinear, 2 = coplaner.public double[] randomSphericalPoints(int num, double radius)
num
points whose x, y, and
z values are randomly chosen to lie within a sphere.num
- number of points to produceradius
- radius of the spherepublic double[] randomCubedPoints(int num, double range, double max)
num
points whose x, y, and
z values are each randomly chosen to lie within a specified
range, and then clipped to a maximum absolute
value. This means a large number of points
may lie on the surface of cube, which is useful
for creating degenerate convex hull situations.num
- number of points to producerange
- coordinate values will lie between -range and
range, before clippingmax
- maximum absolute value to which the coordinates
are clippedpublic double[] randomGridPoints(int gridSize, double width)
gridSize
- number of points in each direction,
so that the total number of points produced is the cube of
gridSize.width
- distance between each point along a particular
directionpublic void explicitAndRandomTests()
Passed
to System.out if all is well.public void timingTests()
public static void main(String[] args)
Passed
if all is well.
Otherwise, an error message and stack trace
are printed.
If the option -timing
is supplied,
then timing information is produced instead.
Processing Library ComputationalGeometry by Mark Collins & Toru Hasegawa. (c) 2015