org.apache.commons.math3.analysis.interpolation

## Class MicrosphereInterpolatingFunction

- java.lang.Object
- - org.apache.commons.math3.analysis.interpolation.MicrosphereInterpolatingFunction

All Implemented Interfaces:
  MultivariateFunction

    public class MicrosphereInterpolatingFunction
    extends java.lang.Object
    implements MultivariateFunction

Interpolating function that implements the Microsphere Projection.

Version:
  $Id: MicrosphereInterpolatingFunction.java 1379904 2012-09-01 23:54:52Z erans $

### Nested Class Summary

Nested Classes
`private static class` `MicrosphereInterpolatingFunction.MicrosphereSurfaceElement` Class for storing the accounting data needed to perform the microsphere projection.

### Field Summary

Fields
`private double` `brightnessExponent` Exponent used in the power law that computes the weights of the sample data.
`private int` `dimension` Space dimension.
`private java.util.List<MicrosphereInterpolatingFunction.MicrosphereSurfaceElement>` `microsphere` Internal accounting data for the interpolation algorithm.
`private java.util.Map<RealVector,java.lang.Double>` `samples` Sample data.

### Constructor Summary

Constructors
Constructor and Description
`MicrosphereInterpolatingFunction(double[][] xval, double[] yval, int brightnessExponent, int microsphereElements, UnitSphereRandomVectorGenerator rand)`

### Method Summary

Methods
`private double` `cosAngle(RealVector v, RealVector w)` Compute the cosine of the angle between 2 vectors.
`double` `value(double[] point)` Compute the value for the function at the given point.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### dimension

    private final int dimension

Space dimension.

#### microsphere

    private final java.util.List<MicrosphereInterpolatingFunction.MicrosphereSurfaceElement> microsphere

Internal accounting data for the interpolation algorithm. Each element of the list corresponds to one surface element of the microsphere.

#### brightnessExponent

    private final double brightnessExponent

Exponent used in the power law that computes the weights of the sample data.

#### samples

    private final java.util.Map<RealVector,java.lang.Double> samples

Sample data.

### Constructor Detail

#### MicrosphereInterpolatingFunction

    public MicrosphereInterpolatingFunction(double[][] xval,
                                    double[] yval,
                                    int brightnessExponent,
                                    int microsphereElements,
                                    UnitSphereRandomVectorGenerator rand)
                                     throws DimensionMismatchException,
                                            NoDataException,
                                            NullArgumentException

Parameters:
  `xval` - Arguments for the interpolation points. `xval[i][0]` is the first component of interpolation point `i`, `xval[i][1]` is the second component, and so on until `xval[i][d-1]`, the last component of that interpolation point (where `dimension` is thus the dimension of the sampled space).
  `yval` - Values for the interpolation points.
  `brightnessExponent` - Brightness dimming factor.
  `microsphereElements` - Number of surface elements of the microsphere.
  `rand` - Unit vector generator for creating the microsphere.
Throws:
  `DimensionMismatchException` - if the lengths of `yval` and `xval` (equal to `n`, the number of interpolation points) do not match, or the the arrays `xval[0]` ... `xval[n]`, have lengths different from `dimension`.
  `NoDataException` - if there an array has zero-length.
  `NullArgumentException` - if an argument is `null`.

### Method Detail

#### value

    public double value(double[] point)

Description copied from interface: `MultivariateFunction`
Compute the value for the function at the given point.

Specified by:
  `value` in interface `MultivariateFunction`
Parameters:
  `point` - Interpolation point.
Returns:
  the interpolated value.

#### cosAngle

    private double cosAngle(RealVector v,
                  RealVector w)

Compute the cosine of the angle between 2 vectors.

Parameters:
  `v` - Vector.
  `w` - Vector.
Returns:
  the cosine of the angle between `v` and `w`.