cz.cuni.jagrlib.piece
Class SuperShootGather

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.piece.SuperShootGather
All Implemented Interfaces:
Breakable, Property, SLESolver, Template

public class SuperShootGather
extends Piece
implements SLESolver

SLE solver: special solver for radiosity problems - Super-Shoot-Gather.

See Also:
SuperShootGather.java

Field Summary
protected  double ambient
          Ambient term (total unshot radiosity in the environment).
protected  double[] B
          Actual vector of unknown variables.
protected  double[] B2
          Second vector of unknown variables for ambient term.
protected static java.lang.String CATEGORY
          Object category.
protected  SLEData data
          Accelerator: input SLEData.
protected  double[] dBCol
          Actual column of matrix of unshoot radiosity.
protected  double[] dBRow
          Actual row of matrix of unshoot radiosity.
protected  double epsilon
          Required accuracy of solution
static java.lang.String EPSILON
           
protected  boolean isInitialized
          Was the solver already initialized?
protected  double[] kCol
          Actual matrix column.
protected  double[] kRow
          Actual matrix row.
protected  int N
          Number of unknowns.
protected  float[][] nB
          Actual matrix of shooted radiosity.
protected  double[] reflectance
          Reflectance of each element.
protected  double refTotal
          Avarage reflectance.
static RegPiece reg
          Static registration instance for this class.
protected  double[] SG
          Radiosity of a patch that results from the unshot radiosity bouncing around our restricted environment.
protected  int steps
          Number of performed iteration steps.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
protected  boolean useAmbient
          Use ambient term?
protected  double[] weight
          Weights of unknowns (element areas).
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.SLESolver
OMEGA, STEPS, TOTAL_RESIDUAL
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
SuperShootGather()
           
 
Method Summary
 int actualComponent()
          Get actual component number.
protected  void computeAvgReflectance()
          Compute avarage reflectance.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double[] getSolution(double[] result)
          Reads the whole solution vector.
 double getSolution(int col)
          Reads a single unknown (element of solution vector).
protected  double getTotalResidual()
           
 double refine(int maxIterations, boolean save)
          Refine the solution performing several iterations.
 void reset()
          Reset iterative solution algorithm (if applicable).
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setComponent(int c)
          Set actual component (non-mandatory).
 double setEpsilon(double epsilon)
          Sets solver accuracy (whatever it means).
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 void solve(boolean save)
          Solve the whole system en bloc.
protected  double solve(int maxIterations, boolean save)
          Refine the solution performing several iterations.
 void update()
          Input data was changed, solver should adapt to it.
protected  void updateAmbient()
          Update ambient term.
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 

Field Detail

data

protected SLEData data
Accelerator: input SLEData.


epsilon

protected double epsilon
Required accuracy of solution


useAmbient

protected boolean useAmbient
Use ambient term?


steps

protected int steps
Number of performed iteration steps.


N

protected int N
Number of unknowns.


B

protected double[] B
Actual vector of unknown variables.


B2

protected double[] B2
Second vector of unknown variables for ambient term.


dBRow

protected double[] dBRow
Actual row of matrix of unshoot radiosity.


dBCol

protected double[] dBCol
Actual column of matrix of unshoot radiosity.


SG

protected double[] SG
Radiosity of a patch that results from the unshot radiosity bouncing around our restricted environment.


nB

protected float[][] nB
Actual matrix of shooted radiosity.


kRow

protected double[] kRow
Actual matrix row.


kCol

protected double[] kCol
Actual matrix column.


weight

protected double[] weight
Weights of unknowns (element areas).


reflectance

protected double[] reflectance
Reflectance of each element.


refTotal

protected double refTotal
Avarage reflectance.


ambient

protected double ambient
Ambient term (total unshot radiosity in the environment).


isInitialized

protected boolean isInitialized
Was the solver already initialized?


EPSILON

public static final java.lang.String EPSILON
See Also:
Constant Field Values

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

SuperShootGather

public SuperShootGather()
Method Detail

setEpsilon

public double setEpsilon(double epsilon)
Sets solver accuracy (whatever it means).

Specified by:
setEpsilon in interface SLESolver

solve

public void solve(boolean save)
Solve the whole system en bloc.

Specified by:
solve in interface SLESolver
Parameters:
save - Solution will be saved into the associated SLEDataStore.

reset

public void reset()
Reset iterative solution algorithm (if applicable).

Specified by:
reset in interface SLESolver

refine

public double refine(int maxIterations,
                     boolean save)
Refine the solution performing several iterations.

Specified by:
refine in interface SLESolver
Parameters:
maxIterations - Number of iterations requested.
save - Solution will be saved into the associated SLEDataStore.
Returns:
Achieved precision (if less than epsilon, the system has converged).

update

public void update()
Input data was changed, solver should adapt to it. Usually solve(boolean) or refine(int, boolean) will be called afterwards..

Specified by:
update in interface SLESolver

getSolution

public double getSolution(int col)
Reads a single unknown (element of solution vector). Non-mandatory.

Specified by:
getSolution in interface SLESolver

getSolution

public double[] getSolution(double[] result)
Reads the whole solution vector. Non-mandatory.

Specified by:
getSolution in interface SLESolver

actualComponent

public int actualComponent()
Get actual component number.

Specified by:
actualComponent in interface SLESolver

setComponent

public void setComponent(int c)
Set actual component (non-mandatory).

Specified by:
setComponent in interface SLESolver

solve

protected double solve(int maxIterations,
                       boolean save)
Refine the solution performing several iterations.

Parameters:
maxIterations - Number of iterations requested.
save - Solution will be saved into the associated SLEDataStore.
Returns:
Achieved precision (if less than epsilon, the system has converged).

computeAvgReflectance

protected void computeAvgReflectance()
Compute avarage reflectance. Must be called before updateAmbient().


updateAmbient

protected void updateAmbient()
Update ambient term. Must be called after updateAmbient().


getTotalResidual

protected double getTotalResidual()

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class DefaultProperty
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class DefaultProperty
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.