Environment for
DeveLoping
KDD-Applications
Supported by Index-Structures

de.lmu.ifi.dbs.elki.visualization
Class VisualizationProjection

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.visualization.VisualizationProjection

public class VisualizationProjection
extends Object

Class to encapsulate a projection as used in SVG plotting and UI, which will often be just 2D, but should ideally support any projection onto a 2D plane.

Author:
Erich Schubert

Field Summary
private  int dim
          Database dimensionality
private  AffineTransformation proj
          Affine transformation used in projection
static double SCALE
          Scaling constant.
private  LinearScale[] scales
          Scales in data set
 
Constructor Summary
VisualizationProjection(Database<? extends NumberVector<?,?>> db, LinearScale[] scales, AffineTransformation proj)
          Constructor with a given database and axes.
VisualizationProjection(Database<? extends NumberVector<?,?>> db, LinearScale[] scales, int ax1, int ax2)
          Constructor with a given database and axes.
 
Method Summary
static AffineTransformation axisProjection(int dim, int ax1, int ax2)
          Compute an transformation matrix to show only axis ax1 and ax2.
 String estimateTransformString(double margin, double width, double height)
          Get a SVG transformation string to bring the contents into the unit cube.
 Pair<MinMax<Double>,MinMax<Double>> estimateViewport()
          Estimate the viewport requirements
 double getScale()
          Global scaling function.
 LinearScale getScale(int d)
          Get the scales used, for rendering scales mostly.
 Vector projectDataToRenderSpace(double[] data)
          Project a data vector from data space to rendering space.
 Vector projectDataToRenderSpace(NumberVector<?,?> data)
          Project a data vector from data space to rendering space.
 Vector projectDataToScaledSpace(double[] data)
          Project a data vector from data space to scaled space.
 Vector projectDataToScaledSpace(NumberVector<?,?> data)
          Project a data vector from data space to scaled space.
 Vector projectRelativeDataToRenderSpace(double[] data)
          Project a relative data vector from data space to rendering space.
 Vector projectRelativeDataToRenderSpace(NumberVector<?,?> data)
          Project a relative data vector from data space to rendering space.
 Vector projectRelativeDataToScaledSpace(double[] data)
          Project a relative data vector from data space to scaled space.
 Vector projectRelativeDataToScaledSpace(NumberVector<?,?> data)
          Project a relative data vector from data space to scaled space.
<NV extends NumberVector<NV,?>>
NV
projectRelativeRenderToDataSpace(Vector v, NV sampleobject)
          Project a relative vector from rendering space to data space.
 Vector projectRelativeRenderToScaled(Vector v)
          Project a relative vector from rendering space to scaled space.
<NV extends NumberVector<NV,?>>
NV
projectRelativeScaledToDataSpace(Vector v, NV sampleobject)
          Project a relative vector from scaled space to data space.
 Vector projectRelativeScaledToRender(Vector v)
          Project a relative vector from scaled space to rendering space.
<NV extends NumberVector<NV,?>>
NV
projectRenderToDataSpace(Vector v, NV sampleobject)
          Project a vector from rendering space to data space.
 Vector projectRenderToScaled(Vector v)
          Project a vector from rendering space to scaled space.
<NV extends NumberVector<NV,?>>
NV
projectScaledToDataSpace(Vector v, NV sampleobject)
          Project a vector from scaled space to data space.
 Vector projectScaledToRender(Vector v)
          Project a vector from scaled space to rendering space.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dim

private int dim
Database dimensionality


scales

private LinearScale[] scales
Scales in data set


proj

private AffineTransformation proj
Affine transformation used in projection


SCALE

public static final double SCALE
Scaling constant. Keep in sync with StyleLibrary.SCALE.

See Also:
Constant Field Values
Constructor Detail

VisualizationProjection

public VisualizationProjection(Database<? extends NumberVector<?,?>> db,
                               LinearScale[] scales,
                               int ax1,
                               int ax2)
Constructor with a given database and axes.

Parameters:
db - Database
scales - Scales to use
ax1 - First axis
ax2 - Second axis

VisualizationProjection

public VisualizationProjection(Database<? extends NumberVector<?,?>> db,
                               LinearScale[] scales,
                               AffineTransformation proj)
Constructor with a given database and axes.

Parameters:
db - Database
scales - Scales to use
proj - Projection to use
Method Detail

projectScaledToRender

public Vector projectScaledToRender(Vector v)
Project a vector from scaled space to rendering space.

Parameters:
v - vector in scaled space
Returns:
vector in rendering space

projectRenderToScaled

public Vector projectRenderToScaled(Vector v)
Project a vector from rendering space to scaled space.

Parameters:
v - vector in rendering space
Returns:
vector in scaled space

projectRelativeScaledToRender

public Vector projectRelativeScaledToRender(Vector v)
Project a relative vector from scaled space to rendering space.

Parameters:
v - relative vector in scaled space
Returns:
relative vector in rendering space

projectRelativeRenderToScaled

public Vector projectRelativeRenderToScaled(Vector v)
Project a relative vector from rendering space to scaled space.

Parameters:
v - relative vector in rendering space
Returns:
relative vector in scaled space

projectDataToScaledSpace

public Vector projectDataToScaledSpace(NumberVector<?,?> data)
Project a data vector from data space to scaled space.

Parameters:
data - vector in data space
Returns:
vector in scaled space

projectDataToScaledSpace

public Vector projectDataToScaledSpace(double[] data)
Project a data vector from data space to scaled space.

Parameters:
data - vector in data space
Returns:
vector in scaled space

projectScaledToDataSpace

public <NV extends NumberVector<NV,?>> NV projectScaledToDataSpace(Vector v,
                                                                   NV sampleobject)
Project a vector from scaled space to data space.

Type Parameters:
NV - Vector type
Parameters:
v - vector in scaled space
sampleobject - Sample object needed for instantiation via NumberVector.newInstance(double[])
Returns:
vector in data space

projectRelativeDataToScaledSpace

public Vector projectRelativeDataToScaledSpace(NumberVector<?,?> data)
Project a relative data vector from data space to scaled space.

Parameters:
data - relative vector in data space
Returns:
relative vector in scaled space

projectRelativeDataToScaledSpace

public Vector projectRelativeDataToScaledSpace(double[] data)
Project a relative data vector from data space to scaled space.

Parameters:
data - relative vector in data space
Returns:
relative vector in scaled space

projectRelativeScaledToDataSpace

public <NV extends NumberVector<NV,?>> NV projectRelativeScaledToDataSpace(Vector v,
                                                                           NV sampleobject)
Project a relative vector from scaled space to data space.

Type Parameters:
NV - Vector type
Parameters:
v - relative vector in scaled space
sampleobject - Sample object needed for instantiation via NumberVector.newInstance(double[])
Returns:
relative vector in data space

projectDataToRenderSpace

public Vector projectDataToRenderSpace(NumberVector<?,?> data)
Project a data vector from data space to rendering space.

Parameters:
data - vector in data space
Returns:
vector in rendering space

projectDataToRenderSpace

public Vector projectDataToRenderSpace(double[] data)
Project a data vector from data space to rendering space.

Parameters:
data - vector in data space
Returns:
vector in rendering space

projectRenderToDataSpace

public <NV extends NumberVector<NV,?>> NV projectRenderToDataSpace(Vector v,
                                                                   NV sampleobject)
Project a vector from rendering space to data space.

Type Parameters:
NV - Vector type
Parameters:
v - vector in rendering space
sampleobject - Sample object needed for instantiation via NumberVector.newInstance(double[])
Returns:
vector in data space

projectRelativeDataToRenderSpace

public Vector projectRelativeDataToRenderSpace(NumberVector<?,?> data)
Project a relative data vector from data space to rendering space.

Parameters:
data - relative vector in data space
Returns:
relative vector in rendering space

projectRelativeDataToRenderSpace

public Vector projectRelativeDataToRenderSpace(double[] data)
Project a relative data vector from data space to rendering space.

Parameters:
data - relative vector in data space
Returns:
relative vector in rendering space

projectRelativeRenderToDataSpace

public <NV extends NumberVector<NV,?>> NV projectRelativeRenderToDataSpace(Vector v,
                                                                           NV sampleobject)
Project a relative vector from rendering space to data space.

Type Parameters:
NV - Vector type
Parameters:
v - relative vector in rendering space
sampleobject - Sample object needed for instantiation via NumberVector.newInstance(double[])
Returns:
relative vector in data space

getScale

public LinearScale getScale(int d)
Get the scales used, for rendering scales mostly.

Parameters:
d - Dimension
Returns:
Scale used

estimateViewport

public Pair<MinMax<Double>,MinMax<Double>> estimateViewport()
Estimate the viewport requirements

Returns:
MinMax for x and y obtained from projecting scale endpoints

estimateTransformString

public String estimateTransformString(double margin,
                                      double width,
                                      double height)
Get a SVG transformation string to bring the contents into the unit cube.

Parameters:
margin - extra margin to add.
width - Width
height - Height
Returns:
transformation string.

axisProjection

public static AffineTransformation axisProjection(int dim,
                                                  int ax1,
                                                  int ax2)
Compute an transformation matrix to show only axis ax1 and ax2.

Parameters:
dim - Dimensionality
ax1 - First axis
ax2 - Second axis
Returns:
transformation matrix

getScale

public double getScale()
Global scaling function.

Returns:
Scaling factor

Release 0.3 (2010-03-31_1612)