visad
Class Linear3DSet

java.lang.Object
  extended by visad.ThingImpl
      extended by visad.DataImpl
          extended by visad.Set
              extended by visad.SimpleSet
                  extended by visad.SampledSet
                      extended by visad.GriddedSet
                          extended by visad.Gridded3DSet
                              extended by visad.Linear3DSet
All Implemented Interfaces:
Serializable, Cloneable, Data, GriddedSetIface, LinearSet, SampledSetIface, SetIface, SimpleSetIface, Thing
Direct Known Subclasses:
Integer3DSet

public class Linear3DSet
extends Gridded3DSet
implements LinearSet

Linear3DSet represents a finite set of samples of R^3 in a cross product of three arithmetic progressions.

The order of the samples is the rasterization of the orders of the 1D components, with the first component increasing fastest. For more detail, see the example in Linear2DSet.java.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class visad.DataImpl
DataImpl.Syncher
 
Field Summary
 
Fields inherited from interface visad.Data
ABS, ACOS, ACOS_DEGREES, ADD, ASIN, ASIN_DEGREES, ATAN, ATAN_DEGREES, ATAN2, ATAN2_DEGREES, CEIL, COS, COS_DEGREES, DEGREES_TO_RADIANS, DEPENDENT, DIVIDE, EXP, FLOOR, INDEPENDENT, INV_ATAN2, INV_ATAN2_DEGREES, INV_DIVIDE, INV_POW, INV_REMAINDER, INV_SUBTRACT, LOG, MAX, MIN, MULTIPLY, NEAREST_NEIGHBOR, NEGATE, NO_ERRORS, NOP, POW, RADIANS_TO_DEGREES, REMAINDER, RINT, ROUND, SIN, SIN_DEGREES, SQRT, SUBTRACT, TAN, TAN_DEGREES, WEIGHTED_AVERAGE
 
Constructor Summary
Linear3DSet(double first1, double last1, int length1, double first2, double last2, int length2, double first3, double last3, int length3)
          Construct a 3-D cross product of arithmetic progressions with null errors and generic type.
Linear3DSet(Linear1DSet[] sets)
          Construct a 3-D cross product of sets with a generic MathType.
Linear3DSet(MathType type, double first1, double last1, int length1, double first2, double last2, int length2, double first3, double last3, int length3)
          Construct a 3-D cross product of arithmetic progressions with null errors and the specified type.
Linear3DSet(MathType type, double first1, double last1, int length1, double first2, double last2, int length2, double first3, double last3, int length3, CoordinateSystem coord_sys, Unit[] units, ErrorEstimate[] errors)
          Construct a 3-D cross product of arithmetic progressions with the specified type, coord_sys, units and errors.
Linear3DSet(MathType type, double first1, double last1, int length1, double first2, double last2, int length2, double first3, double last3, int length3, CoordinateSystem coord_sys, Unit[] units, ErrorEstimate[] errors, boolean cache)
          Construct a 3-D cross product of arithmetic progressions with the specified type, coord_sys, units and errors.
Linear3DSet(MathType type, Linear1DSet[] sets)
          Construct a 3-D cross product of sets with the specified type.
Linear3DSet(MathType type, Linear1DSet[] sets, CoordinateSystem coord_sys, Unit[] units, ErrorEstimate[] errors)
          Construct a 3-D cross product of sets, with the specified type, coord_sys, units and errors.
Linear3DSet(MathType type, Linear1DSet[] sets, CoordinateSystem coord_sys, Unit[] units, ErrorEstimate[] errors, boolean cache)
          Construct a 3-D cross product of sets, with the specified type, coord_sys, units and errors.
 
Method Summary
 Object cloneButType(MathType type)
          Return a clone of this object with a new MathType.
 boolean equals(Object set)
          Check to see if this Linear3DSet is equal to the Object in question.
 Linear1DSet getLinear1DComponent(int i)
          Get the indexed component (X is at 0, Y is at 1, and Z is at 2)
 float[][] getSamples(boolean copy)
          Return the array of values in R^3 space corresponding to this cross product of arithmetic progressions.
 Linear1DSet getX()
          Return the first arithmetic progression for this cross product (X of XYZ).
 Linear1DSet getY()
          Return the second arithmetic progression for this cross product (Y of XYZ).
 Linear1DSet getZ()
          Return the third arithmetic progression for this cross product (Z of XYZ).
 float[][] gridToValue(float[][] grid)
          transform an array of non-integer grid coordinates to an array of values in R^3
 int hashCode()
          Returns the hash code for this instance.
 float[][] indexToValue(int[] index)
          Convert an array of 1-D indices to an array of values in R^3 space.
 boolean isMissing()
          Check to see if this is an empty cross-product.
 String longString(String pre)
          Extended version of the toString() method.
 VisADGeometryArray[] make3DGeometry(byte[][] color_values)
          note makeSpatial never returns a Linear3DSet, so this is not enough; must handle it like linear texture mapping; also, want to exploit Texture3D - so must figure out how to make texture alpha work
 VisADGeometryArray makeLinearIsoSurface(float isolevel, float[] fieldValues, byte[][] color_values, boolean indexed, ScalarMap[] spatial_maps, int[] permute)
           
 float[][] valueToGrid(float[][] value)
          transform an array of values in R^3 to an array of non-integer grid coordinates
 
Methods inherited from class visad.Gridded3DSet
flags, getNormals, getStartPoint, gridToValue, main, make_normals, make2DGeometry, makeIsoLines, makeIsoSurface, makeIsoSurfaceMissingSpatial, makeNormals, poly_triangle_stripe, valueToIndex
 
Methods inherited from class visad.GriddedSet
create, create, create, create, getLength, getLengths, getNeighbors, getNeighbors, getWedge, makeSpatial, valueToInterp
 
Methods inherited from class visad.SampledSet
clone, computeRanges, computeRanges, cram_missing, finalize, getHi, getLow, getMySamples, getNeighbors, getSamples, make1DGeometry, makePointGeometry, setCacheSizeThreshold, setGeometryArray, setGeometryArray, setMySamples
 
Methods inherited from class visad.SimpleSet
getManifoldDimension
 
Methods inherited from class visad.Set
__getitem__, __len__, addEqualsCache, addNotEqualsCache, copyDoubles, copyFloats, doubleToFloat, doubleToIndex, equalUnitAndCS, floatToDouble, getCoordinateSystem, getDimension, getDoubles, getDoubles, getLength, getSetErrors, getSetUnits, indexToDouble, longString, merge1DSets, testEqualsCache, testNotEqualsCache, unary, unitAndCSHashCode
 
Methods inherited from class visad.DataImpl
__add__, __add__, __div__, __div__, __mod__, __mod__, __mul__, __mul__, __neg__, __pow__, __pow__, __radd__, __rdiv__, __rmod__, __rmul__, __rpow__, __rsub__, __sub__, __sub__, abs, abs, acos, acos, acosDegrees, acosDegrees, add, add, adjustSamplingError, asin, asin, asinDegrees, asinDegrees, atan, atan, atan2, atan2, atan2Degrees, atan2Degrees, atanDegrees, atanDegrees, binary, binary, ceil, ceil, changeMathType, computeRanges, computeRanges, cos, cos, cosDegrees, cosDegrees, dataClone, divide, divide, exp, exp, floor, floor, getType, local, log, log, max, max, min, min, multiply, multiply, negate, negate, notifyReferences, pow, pow, remainder, remainder, rint, rint, round, round, sin, sin, sinDegrees, sinDegrees, sqrt, sqrt, subtract, subtract, tan, tan, tanDegrees, tanDegrees, toString, unary
 
Methods inherited from class visad.ThingImpl
addReference, removeReference
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface visad.SampledSetIface
getHi, getLow
 
Methods inherited from interface visad.SetIface
cram_missing, doubleToIndex, equalUnitAndCS, getCoordinateSystem, getDimension, getDoubles, getDoubles, getLength, getManifoldDimension, getNeighbors, getSamples, getSetErrors, getSetUnits, indexToDouble, make1DGeometry, makePointGeometry, merge1DSets
 
Methods inherited from interface visad.Data
abs, abs, acos, acos, acosDegrees, acosDegrees, add, add, adjustSamplingError, asin, asin, asinDegrees, asinDegrees, atan, atan, atan2, atan2, atan2Degrees, atan2Degrees, atanDegrees, atanDegrees, binary, binary, ceil, ceil, changeMathType, computeRanges, computeRanges, computeRanges, cos, cos, cosDegrees, cosDegrees, dataClone, divide, divide, exp, exp, floor, floor, getType, local, log, log, longString, max, max, min, min, multiply, multiply, negate, negate, pow, pow, remainder, remainder, rint, rint, round, round, sin, sin, sinDegrees, sinDegrees, sqrt, sqrt, subtract, subtract, tan, tan, tanDegrees, tanDegrees, unary, unary
 
Methods inherited from interface visad.Thing
addReference, removeReference
 

Constructor Detail

Linear3DSet

public Linear3DSet(Linear1DSet[] sets)
            throws VisADException
Construct a 3-D cross product of sets with a generic MathType.

Parameters:
sets - Linear1DSets that make up this Linear3DSet.
Throws:
VisADException - illegal sets or other VisAD error.

Linear3DSet

public Linear3DSet(MathType type,
                   Linear1DSet[] sets)
            throws VisADException
Construct a 3-D cross product of sets with the specified type.

Parameters:
type - MathType for this Linear3DSet. Must be consistent with MathType-s of sets.
sets - Linear1DSets that make up this Linear3DSet.
Throws:
VisADException - illegal sets or other VisAD error.

Linear3DSet

public Linear3DSet(double first1,
                   double last1,
                   int length1,
                   double first2,
                   double last2,
                   int length2,
                   double first3,
                   double last3,
                   int length3)
            throws VisADException
Construct a 3-D cross product of arithmetic progressions with null errors and generic type.

Parameters:
first1 - first value in first arithmetic progression
last1 - last value in first arithmetic progression
length1 - number of values in first arithmetic progression
first2 - first value in second arithmetic progression
last2 - last value in second arithmetic progression
length2 - number of values in second arithmetic progression
first3 - first value in third arithmetic progression
last3 - last value in third arithmetic progression
length3 - number of values in third arithmetic progression
Throws:
VisADException - problem creating VisAD objects.

Linear3DSet

public Linear3DSet(MathType type,
                   double first1,
                   double last1,
                   int length1,
                   double first2,
                   double last2,
                   int length2,
                   double first3,
                   double last3,
                   int length3)
            throws VisADException
Construct a 3-D cross product of arithmetic progressions with null errors and the specified type.

Parameters:
type - MathType for this Linear3DSet.
first1 - first value in first arithmetic progression
last1 - last value in first arithmetic progression
length1 - number of values in first arithmetic progression
first2 - first value in second arithmetic progression
last2 - last value in second arithmetic progression
length2 - number of values in second arithmetic progression
first3 - first value in third arithmetic progression
last3 - last value in third arithmetic progression
length3 - number of values in third arithmetic progression
Throws:
VisADException - problem creating VisAD objects.

Linear3DSet

public Linear3DSet(MathType type,
                   double first1,
                   double last1,
                   int length1,
                   double first2,
                   double last2,
                   int length2,
                   double first3,
                   double last3,
                   int length3,
                   CoordinateSystem coord_sys,
                   Unit[] units,
                   ErrorEstimate[] errors)
            throws VisADException
Construct a 3-D cross product of arithmetic progressions with the specified type, coord_sys, units and errors.

Parameters:
type - MathType for this Linear3DSet.
first1 - first value in first arithmetic progression
last1 - last value in first arithmetic progression
length1 - number of values in first arithmetic progression
first2 - first value in second arithmetic progression
last2 - last value in second arithmetic progression
length2 - number of values in second arithmetic progression
first3 - first value in third arithmetic progression
last3 - last value in third arithmetic progression
length3 - number of values in third arithmetic progression
coord_sys - CoordinateSystem for this set. May be null, but if not, must be consistent with type.
units - Unit-s for the values in sets. May be null, but must be convertible with values in sets.
errors - ErrorEstimate-s for values in sets, may be null
Throws:
VisADException - problem creating VisAD objects.

Linear3DSet

public Linear3DSet(MathType type,
                   double first1,
                   double last1,
                   int length1,
                   double first2,
                   double last2,
                   int length2,
                   double first3,
                   double last3,
                   int length3,
                   CoordinateSystem coord_sys,
                   Unit[] units,
                   ErrorEstimate[] errors,
                   boolean cache)
            throws VisADException
Construct a 3-D cross product of arithmetic progressions with the specified type, coord_sys, units and errors.

Parameters:
type - MathType for this Linear3DSet.
first1 - first value in first arithmetic progression
last1 - last value in first arithmetic progression
length1 - number of values in first arithmetic progression
first2 - first value in second arithmetic progression
last2 - last value in second arithmetic progression
length2 - number of values in second arithmetic progression
first3 - first value in third arithmetic progression
last3 - last value in third arithmetic progression
length3 - number of values in third arithmetic progression
coord_sys - CoordinateSystem for this set. May be null, but if not, must be consistent with type.
units - Unit-s for the values in sets. May be null, but must be convertible with values in sets.
errors - ErrorEstimate-s for values in sets, may be null
cache - if true, enumerate and cache the samples. This will result in a larger memory footprint, but will reduce the time to return samples from calls to SampledSet.getSamples().
Throws:
VisADException - problem creating VisAD objects.

Linear3DSet

public Linear3DSet(MathType type,
                   Linear1DSet[] sets,
                   CoordinateSystem coord_sys,
                   Unit[] units,
                   ErrorEstimate[] errors)
            throws VisADException
Construct a 3-D cross product of sets, with the specified type, coord_sys, units and errors.

Parameters:
type - MathType for this Linear3DSet. Must be consistent with MathType-s of sets.
sets - Linear1DSets that make up this Linear3DSet.
coord_sys - CoordinateSystem for this set. May be null, but if not, must be consistent with type.
units - Unit-s for the values in sets. May be null, but must be convertible with values in sets.
errors - ErrorEstimate-s for values in sets, may be null
Throws:
VisADException - illegal sets or other VisAD error.

Linear3DSet

public Linear3DSet(MathType type,
                   Linear1DSet[] sets,
                   CoordinateSystem coord_sys,
                   Unit[] units,
                   ErrorEstimate[] errors,
                   boolean cache)
            throws VisADException
Construct a 3-D cross product of sets, with the specified type, coord_sys, units and errors.

Parameters:
type - MathType for this Linear3DSet. Must be consistent with MathType-s of sets.
sets - Linear1DSets that make up this Linear3DSet.
coord_sys - CoordinateSystem for this set. May be null, but if not, must be consistent with type.
units - Unit-s for the values in sets. May be null, but must be convertible with values in sets.
errors - ErrorEstimate-s for values in sets, may be null
cache - if true, enumerate and cache the samples. This will result in a larger memory footprint, but will reduce the time to return samples from calls to SampledSet.getSamples().
Throws:
VisADException - illegal sets or other VisAD error.
Method Detail

indexToValue

public float[][] indexToValue(int[] index)
                       throws VisADException
Convert an array of 1-D indices to an array of values in R^3 space.

Specified by:
indexToValue in interface SetIface
Overrides:
indexToValue in class Gridded3DSet
Parameters:
index - array of indices of values in R^3 space.
Returns:
values in R^3 space corresponding to indices.
Throws:
VisADException - problem converting indices to values.

gridToValue

public float[][] gridToValue(float[][] grid)
                      throws VisADException
transform an array of non-integer grid coordinates to an array of values in R^3

Specified by:
gridToValue in interface GriddedSetIface
Overrides:
gridToValue in class Gridded3DSet
Parameters:
grid - Grid values, where dim1 is the grid coordinate dimension and dim2 is the length of the grid.
Returns:
R^n coordinates where dim1 is DomainDimension and dim2 is the length of the grid.
Throws:
VisADException - VisAD failure.

valueToGrid

public float[][] valueToGrid(float[][] value)
                      throws VisADException
transform an array of values in R^3 to an array of non-integer grid coordinates

Specified by:
valueToGrid in interface GriddedSetIface
Overrides:
valueToGrid in class Gridded3DSet
Parameters:
value - The array of points for which non-integer grid coordinates are desired. value[i][j] is the i-th coordinate of the j-th point.
Returns:
The array of grid coordinates corresponding to the points. Element [i][j] is the i-th non-integer grid coordinate of the j-th point.
Throws:
VisADException - VisAD failure.

getX

public Linear1DSet getX()
Return the first arithmetic progression for this cross product (X of XYZ).

Returns:
first arithmetic progression as a Linear1DSet.

getY

public Linear1DSet getY()
Return the second arithmetic progression for this cross product (Y of XYZ).

Returns:
second arithmetic progression as a Linear1DSet.

getZ

public Linear1DSet getZ()
Return the third arithmetic progression for this cross product (Z of XYZ).

Returns:
third arithmetic progression as a Linear1DSet.

isMissing

public boolean isMissing()
Check to see if this is an empty cross-product.

Specified by:
isMissing in interface Data
Overrides:
isMissing in class SampledSet
Returns:
always false.

getSamples

public float[][] getSamples(boolean copy)
                     throws VisADException
Return the array of values in R^3 space corresponding to this cross product of arithmetic progressions.

Specified by:
getSamples in interface SetIface
Overrides:
getSamples in class SampledSet
Parameters:
copy - if true, return a copy of the samples.
Returns:
array of values in R^3 space.
Throws:
VisADException - problem creating samples.

make3DGeometry

public VisADGeometryArray[] make3DGeometry(byte[][] color_values)
                                    throws VisADException
note makeSpatial never returns a Linear3DSet, so this is not enough; must handle it like linear texture mapping; also, want to exploit Texture3D - so must figure out how to make texture alpha work

Specified by:
make3DGeometry in interface SetIface
Overrides:
make3DGeometry in class SampledSet
Returns:
arrays of VisADGeometryArray
Throws:
VisADException

makeLinearIsoSurface

public VisADGeometryArray makeLinearIsoSurface(float isolevel,
                                               float[] fieldValues,
                                               byte[][] color_values,
                                               boolean indexed,
                                               ScalarMap[] spatial_maps,
                                               int[] permute)
                                        throws VisADException
Throws:
VisADException

equals

public boolean equals(Object set)
Check to see if this Linear3DSet is equal to the Object in question.

Specified by:
equals in interface SetIface
Overrides:
equals in class GriddedSet
Parameters:
set - Object in question
Returns:
true if set is a Linear3DSet and each of the Linear1DSet-s that make up this cross product are equal.

hashCode

public int hashCode()
Returns the hash code for this instance.

Overrides:
hashCode in class GriddedSet
Returns:
The hash code for this instance.

getLinear1DComponent

public Linear1DSet getLinear1DComponent(int i)
Get the indexed component (X is at 0, Y is at 1, and Z is at 2)

Specified by:
getLinear1DComponent in interface LinearSet
Parameters:
i - Index of component
Returns:
The requested component
Throws:
ArrayIndexOutOfBoundsException - If an invalid index is specified.

cloneButType

public Object cloneButType(MathType type)
                    throws VisADException
Return a clone of this object with a new MathType.

Specified by:
cloneButType in interface SetIface
Overrides:
cloneButType in class Gridded3DSet
Parameters:
type - new MathType.
Returns:
new Linear3DSet with type.
Throws:
VisADException - if type is not compatible with MathType of component Linear1DSets.

longString

public String longString(String pre)
                  throws VisADException
Extended version of the toString() method.

Specified by:
longString in interface Data
Overrides:
longString in class GriddedSet
Parameters:
pre - prefix for string.
Returns:
wordy string describing this Linear3DSet.
Throws:
VisADException