Class InterpolatingMicrosphere
java.lang.Object
org.hipparchus.analysis.interpolation.InterpolatingMicrosphere
- Direct Known Subclasses:
InterpolatingMicrosphere2D
Utility class for the
MicrosphereProjectionInterpolator
algorithm.-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
InterpolatingMicrosphere
(int dimension, int size, double maxDarkFraction, double darkThreshold, double background) Create an unitialiazed sphere.InterpolatingMicrosphere
(int dimension, int size, double maxDarkFraction, double darkThreshold, double background, UnitSphereRandomVectorGenerator rand) Create a sphere from randomly sampled vectors.protected
Copy constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
add
(double[] normal, boolean copy) Replacei
-th facet of the microsphere.copy()
Perform a copy.int
Get the space dimensionality.int
getSize()
Get the size of the sphere.double
value
(double[] point, double[][] samplePoints, double[] sampleValues, double exponent, double noInterpolationTolerance) Estimate the value at the requested location.
-
Constructor Details
-
InterpolatingMicrosphere
protected InterpolatingMicrosphere(int dimension, int size, double maxDarkFraction, double darkThreshold, double background) Create an unitialiazed sphere. Sub-classes are responsible for calling theadd(double[]) add
method in order to initialize all the sphere's facets.- Parameters:
dimension
- Dimension of the data space.size
- Number of surface elements of the sphere.maxDarkFraction
- Maximum fraction of the facets that can be dark. If the fraction of "non-illuminated" facets is larger, no estimation of the value will be performed, and thebackground
value will be returned instead.darkThreshold
- Value of the illumination below which a facet is considered dark.background
- Value returned when themaxDarkFraction
threshold is exceeded.- Throws:
MathIllegalArgumentException
- ifdimension <= 0
orsize <= 0
.MathIllegalArgumentException
- ifdarkThreshold < 0
.MathIllegalArgumentException
- ifmaxDarkFraction
does not belong to the interval[0, 1]
.
-
InterpolatingMicrosphere
public InterpolatingMicrosphere(int dimension, int size, double maxDarkFraction, double darkThreshold, double background, UnitSphereRandomVectorGenerator rand) Create a sphere from randomly sampled vectors.- Parameters:
dimension
- Dimension of the data space.size
- Number of surface elements of the sphere.maxDarkFraction
- Maximum fraction of the facets that can be dark. If the fraction of "non-illuminated" facets is larger, no estimation of the value will be performed, and thebackground
value will be returned instead.darkThreshold
- Value of the illumination below which a facet is considered dark.background
- Value returned when themaxDarkFraction
threshold is exceeded.rand
- Unit vector generator for creating the microsphere.- Throws:
MathIllegalArgumentException
- if the size of the generated vectors does not match the dimension set in the constructor.MathIllegalArgumentException
- ifdimension <= 0
orsize <= 0
.MathIllegalArgumentException
- ifdarkThreshold < 0
.MathIllegalArgumentException
- ifmaxDarkFraction
does not belong to the interval[0, 1]
.
-
InterpolatingMicrosphere
Copy constructor.- Parameters:
other
- Instance to copy.
-
-
Method Details
-
copy
Perform a copy.- Returns:
- a copy of this instance.
-
getDimension
public int getDimension()Get the space dimensionality.- Returns:
- the number of space dimensions.
-
getSize
public int getSize()Get the size of the sphere.- Returns:
- the number of surface elements of the microspshere.
-
value
public double value(double[] point, double[][] samplePoints, double[] sampleValues, double exponent, double noInterpolationTolerance) Estimate the value at the requested location. This microsphere is placed at the givenpoint
, contribution of the givensamplePoints
to each sphere facet is computed (illumination) and the interpolation is performed (integration of the illumination).- Parameters:
point
- Interpolation point.samplePoints
- Sampling data points.sampleValues
- Sampling data values at the correspondingsamplePoints
.exponent
- Exponent used in the power law that computes the weights (distance dimming factor) of the sample data.noInterpolationTolerance
- When the distance between thepoint
and one of thesamplePoints
is less than this value, no interpolation will be performed, and the value of the sample will just be returned.- Returns:
- the estimated value at the given
point
. - Throws:
MathIllegalArgumentException
- ifexponent < 0
.
-
add
protected void add(double[] normal, boolean copy) Replacei
-th facet of the microsphere. Method for initializing the microsphere facets.- Parameters:
normal
- Facet's normal vector.copy
- Whether to copy the given array.- Throws:
MathIllegalArgumentException
- if the length ofn
does not match the space dimension.MathIllegalStateException
- if the method has been called more times than the size of the sphere.
-