org.opensourcephysics.display2d
Class FlatData

java.lang.Object
  extended by org.opensourcephysics.display2d.FlatData
All Implemented Interfaces:
GridData

public class FlatData
extends java.lang.Object
implements GridData

FlatData stores numeric data for 2d visualizations using a single array. Components are stored in the array in row-major order. Data components can represent almost anything. For example, we store an n by m grid of complex numbers as follows:

 data=new double [2*n*m]<\code>
 <\pre>

Version:
1.0
Author:
Wolfgang Christian

Field Summary
protected  double bottom
           
protected  boolean cellData
           
protected  double[] data
           
protected  double dx
           
protected  double dy
           
protected  double left
           
protected  java.lang.String[] names
           
protected  double right
           
protected  double top
           
 
Constructor Summary
FlatData(int ix, int iy, int ncomponents)
          FlatData constructor.
 
Method Summary
 double getBottom()
          Gets the y value for the last row of the grid.
 int getComponentCount()
          Gets the number of data components.
 java.lang.String getComponentName(int i)
          Gets the name of the component,
 double[][][] getData()
          Gets the array containing the data.
 double getDx()
          Gets the change in x between grid columns.
 double getDy()
          Gets the change in y between grid rows.
 double getLeft()
          Gets the x value for the first column in the grid.
static XML.ObjectLoader getLoader()
          Returns the XML.ObjectLoader for this class.
 int getNx()
          Gets the number of x entries.
 int getNy()
          Gets the number of y entries.
 double getRight()
          Gets the x value for the right column in the grid.
 double getTop()
          Gets the y value for the first row of the grid.
 double getValue(int ix, int iy, int component)
          Gets the value of the given component at the given location.
 double[] getZRange(int n)
          Gets the minimum and maximum values of the n-th component.
 double indexToX(int i)
          Gets the x coordinate for the given index.
 double indexToY(int i)
          Gets the y coordinate for the given index.
 double interpolate(double x, double y, int index)
          Estimates the value of a component at an untabulated point, (x,y).
 double[] interpolate(double x, double y, int[] indexes, double[] values)
          Estimates multiple sample components at an untabulated point, (x,y).
 boolean isCellData()
          Gets the cellData flag.
 void setCellScale(double _left, double _right, double _bottom, double _top)
          Sets the left, right, bottom, and top of the grid data using a cell model.
 void setCenteredCellScale(double xmin, double xmax, double ymin, double ymax)
          Sets the grid such that the centers of the corner cells match the given coordinates.
 void setComponentName(int i, java.lang.String name)
          Sets the name of the component.
 void setScale(double _left, double _right, double _bottom, double _top)
          Sets the left, right, bottom, and top of the grid data using a lattice model.
 void setValue(int ix, int iy, int component, double value)
          Sets the value of the given component at the given location.
 int xToIndex(double x)
          Gets closest index from the given x world coordinate.
 int yToIndex(double y)
          Gets closest index from the given y world coordinate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

data

protected double[] data

left

protected double left

right

protected double right

bottom

protected double bottom

top

protected double top

dx

protected double dx

dy

protected double dy

cellData

protected boolean cellData

names

protected java.lang.String[] names
Constructor Detail

FlatData

public FlatData(int ix,
                int iy,
                int ncomponents)
FlatData constructor. The data array will contain ncomponents*ix*iy values.

Parameters:
ix - the number of x values
iy - the number of y values
ncomponents - the number of components
Method Detail

setComponentName

public void setComponentName(int i,
                             java.lang.String name)
Sets the name of the component.

Specified by:
setComponentName in interface GridData
Parameters:
i - int the component index
name - String

getComponentName

public java.lang.String getComponentName(int i)
Gets the name of the component,

Specified by:
getComponentName in interface GridData
Parameters:
i - int the component index
Returns:
String the name

getComponentCount

public int getComponentCount()
Gets the number of data components.

Specified by:
getComponentCount in interface GridData
Returns:
int

setScale

public void setScale(double _left,
                     double _right,
                     double _bottom,
                     double _top)
Sets the left, right, bottom, and top of the grid data using a lattice model. Lattice model XY coordinates are the edges of each cell and NOT the center.

Specified by:
setScale in interface GridData
Parameters:
_left -
_right -
_bottom -
_top -

isCellData

public boolean isCellData()
Gets the cellData flag.

Specified by:
isCellData in interface GridData
Returns:
true if cell data.

getValue

public double getValue(int ix,
                       int iy,
                       int component)
Gets the value of the given component at the given location.

Specified by:
getValue in interface GridData
Parameters:
ix - x index
iy - y index
component -
Returns:
the value.

setValue

public void setValue(int ix,
                     int iy,
                     int component,
                     double value)
Sets the value of the given component at the given location.

Specified by:
setValue in interface GridData
Parameters:
ix - x index
iy - y index
component -
value -

getNx

public int getNx()
Gets the number of x entries.

Specified by:
getNx in interface GridData
Returns:
nx

getNy

public int getNy()
Gets the number of y entries.

Specified by:
getNy in interface GridData
Returns:
ny

setCellScale

public void setCellScale(double _left,
                         double _right,
                         double _bottom,
                         double _top)
Sets the left, right, bottom, and top of the grid data using a cell model. Cell model XY coordinates are centered on each cell NOT along the edges.

Specified by:
setCellScale in interface GridData
Parameters:
_left -
_right -
_bottom -
_top -

setCenteredCellScale

public void setCenteredCellScale(double xmin,
                                 double xmax,
                                 double ymin,
                                 double ymax)
Sets the grid such that the centers of the corner cells match the given coordinates. Coordinates are centered on each cell and the bounds are ouside the max and min values.

Specified by:
setCenteredCellScale in interface GridData
Parameters:
xmin -
xmax -
ymin -
ymax -

interpolate

public double interpolate(double x,
                          double y,
                          int index)
Estimates the value of a component at an untabulated point, (x,y). Interpolate uses bilinear interpolation on the grid. Although the interpolating function is continous across the grid boundaries, the gradient changes discontinuously at the grid-square boundaries.

Specified by:
interpolate in interface GridData
Parameters:
x - the untabulated x
y - the untabulated y
index -
Returns:
the interpolated sample

interpolate

public double[] interpolate(double x,
                            double y,
                            int[] indexes,
                            double[] values)
Estimates multiple sample components at an untabulated point, (x,y). Interpolate uses bilinear interpolation on the grid. Although the interpolating function is continous across the grid boundaries, the gradient changes discontinuously at the grid square boundaries.

Specified by:
interpolate in interface GridData
Parameters:
x - untabulated x
y - untabulated y
indexes - to be interpolated
values - array will contain the interpolated values
Returns:
the interpolated array

getData

public double[][][] getData()
Gets the array containing the data.

Specified by:
getData in interface GridData
Returns:
the data

getZRange

public double[] getZRange(int n)
Gets the minimum and maximum values of the n-th component.

Specified by:
getZRange in interface GridData
Parameters:
n - the component
Returns:
{zmin,zmax}

getLeft

public final double getLeft()
Gets the x value for the first column in the grid.

Specified by:
getLeft in interface GridData
Returns:
the leftmost x value

getRight

public final double getRight()
Gets the x value for the right column in the grid.

Specified by:
getRight in interface GridData
Returns:
the rightmost x value

getTop

public final double getTop()
Gets the y value for the first row of the grid.

Specified by:
getTop in interface GridData
Returns:
the topmost y value

getBottom

public final double getBottom()
Gets the y value for the last row of the grid.

Specified by:
getBottom in interface GridData
Returns:
the bottommost y value

getDx

public final double getDx()
Gets the change in x between grid columns.

Specified by:
getDx in interface GridData
Returns:
the bottommost y value

getDy

public final double getDy()
Gets the change in y between grid rows.

Specified by:
getDy in interface GridData
Returns:
the bottommost y value

indexToX

public double indexToX(int i)
Gets the x coordinate for the given index.

Specified by:
indexToX in interface GridData
Parameters:
i - int
Returns:
double the x coordinate

indexToY

public double indexToY(int i)
Gets the y coordinate for the given index.

Specified by:
indexToY in interface GridData
Parameters:
i - int
Returns:
double the y coordinate

xToIndex

public int xToIndex(double x)
Gets closest index from the given x world coordinate.

Specified by:
xToIndex in interface GridData
Parameters:
x - double the coordinate
Returns:
int the index

yToIndex

public int yToIndex(double y)
Gets closest index from the given y world coordinate.

Specified by:
yToIndex in interface GridData
Parameters:
y - double the coordinate
Returns:
int the index

getLoader

public static XML.ObjectLoader getLoader()
Returns the XML.ObjectLoader for this class.

Returns:
the object loader