cz.cuni.jagrlib.obscure
Class RectangleLightSource

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultLightSource
              extended by cz.cuni.jagrlib.obscure.RectangleLightSource
All Implemented Interfaces:
Breakable, LightSource, Property, Template

public class RectangleLightSource
extends DefaultLightSource

Static area light source (rectangle).

Since:
0.25
Version:
0.26 $Rev: 465 $ $Date: 2007-05-25 23:57:10 +0200 (pá, 25 V 2007) $ $Author: pepca $
See Also:
RectangleLightSource.java

Field Summary
protected  int actOrder
          Order number of the actual sample actPoint.
protected  double[] actPoint
          The actual sample.
protected  int actTotal
          Total number of samples for the actual sample actPoint.
protected  double[] dim
          Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D.
protected  int[][] freq
          Sampling statistics.
protected  double[] height
          "Vertical" edge of the rectangle.
static String KEY_DIM
          JGL script key: dim.
static String KEY_HEIGHT
          JGL script key: height vector.
static String KEY_POSITION
          JGL script key: upper left corner.
static String KEY_WIDTH
          JGL script key: width vector.
protected  double[] lightColor
          Color of the source: 1D for monochrome source, 3D for RGB color space, or more for complex spectrum sampled spaces.
protected  RasterGraphics log
          Log-image for sampling statistics.
protected  int logId
          Handle of log-image.
protected  int maxFreq
          Maximum sampling frequency ( maxi,j(freq[i][j]) ).
protected  double[] position
          Light source coordinates (upper left corner).
static RegPiece reg
          Static registration instance for this class.
protected static RandomJames rnd
          Global random generator shared by all light source instances.
protected static RandomJames rndu
          Global random generator used for u-coordinate.
protected static int STAT_SIZE
          Size of sampling statistics in pixels.
protected  double u
          Coordinates of the last sample point.
protected  double v
          Coordinates of the last sample point.
protected  double[] width
          "Horizontal" edge of the rectangle.
 
Fields inherited from class cz.cuni.jagrlib.DefaultLightSource
CATEGORY, inter, KEY_LIGHT, PARAMS, plugInter, scriptName, TEMPLATE_NAME
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.LightSource
COLOR
 
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_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_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
RectangleLightSource()
           
 
Method Summary
protected  void assertSample(int order, int total)
          Computes the given sample point into the actPoint member.
 Object get(String key)
          Gets the given property.
 boolean getDirection(MicroFacet mf, int order, int total, double[] dir)
          Returns light direction between the source and the given MicroFacet.
 boolean getIntensity(MicroFacet mf, int order, int total, double[] color)
          Returns light intensity coming from the source to the given MicroFacet.
 boolean lights(MicroFacet mf, int order, int total)
          Lighting test from the source to the given MicroFacet.
protected  void readScript()
          Read data from JGL script.
 void set(String key, Object value)
          Sets the given property.
 boolean setParams(double[] pos, double[] wid, double[] hei, double[] color, double[] dimming)
          Set light source parameters.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 
Methods inherited from class cz.cuni.jagrlib.DefaultLightSource
assertInter, getDirection, getIntensity, lights, setIntersectable
 
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

KEY_POSITION

public static final String KEY_POSITION
JGL script key: upper left corner.

See Also:
Constant Field Values

KEY_WIDTH

public static final String KEY_WIDTH
JGL script key: width vector.

See Also:
Constant Field Values

KEY_HEIGHT

public static final String KEY_HEIGHT
JGL script key: height vector.

See Also:
Constant Field Values

KEY_DIM

public static final String KEY_DIM
JGL script key: dim.

See Also:
Constant Field Values

position

protected double[] position
Light source coordinates (upper left corner).


width

protected double[] width
"Horizontal" edge of the rectangle.


height

protected double[] height
"Vertical" edge of the rectangle.


lightColor

protected double[] lightColor
Color of the source: 1D for monochrome source, 3D for RGB color space, or more for complex spectrum sampled spaces.


dim

protected double[] dim
Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D. Can be null for no dimming..


rnd

protected static RandomJames rnd
Global random generator shared by all light source instances.


rndu

protected static RandomJames rndu
Global random generator used for u-coordinate.


actOrder

protected int actOrder
Order number of the actual sample actPoint.


actTotal

protected int actTotal
Total number of samples for the actual sample actPoint.


actPoint

protected double[] actPoint
The actual sample.


u

protected double u
Coordinates of the last sample point.


v

protected double v
Coordinates of the last sample point.


STAT_SIZE

protected static final int STAT_SIZE
Size of sampling statistics in pixels.

See Also:
Constant Field Values

logId

protected int logId
Handle of log-image.


log

protected RasterGraphics log
Log-image for sampling statistics.


freq

protected int[][] freq
Sampling statistics.


maxFreq

protected int maxFreq
Maximum sampling frequency ( maxi,j(freq[i][j]) ).


reg

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

Constructor Detail

RectangleLightSource

public RectangleLightSource()
Method Detail

setParams

public boolean setParams(double[] pos,
                         double[] wid,
                         double[] hei,
                         double[] color,
                         double[] dimming)
Set light source parameters.

Parameters:
pos - Source position (upper left corner).
wid - "Horizontal" edge of the rectangle.
hei - "Vertical" edge of the rectangle.
color - Source color/intensity (can be either 1D /for monochrome computing/, 3D /for RGB color system/ or greater /for more complex spectral color sampling/).
dimming - Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D. Can be null for no dimming..
Returns:
true if parameters were successfully set.

readScript

protected void readScript()
Read data from JGL script.


assertSample

protected void assertSample(int order,
                            int total)
Computes the given sample point into the actPoint member.


lights

public boolean lights(MicroFacet mf,
                      int order,
                      int total)
Lighting test from the source to the given MicroFacet. Super-sampling variant.

Specified by:
lights in interface LightSource
Overrides:
lights in class DefaultLightSource
Parameters:
mf - The checked MicroFacet (point on surface of some solid).
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
Returns:
true if the light source lights on the given point.
See Also:
getIntensity(cz.cuni.jagrlib.MicroFacet, int, int, double[]), getDirection(cz.cuni.jagrlib.MicroFacet, int, int, double[])

getIntensity

public boolean getIntensity(MicroFacet mf,
                            int order,
                            int total,
                            double[] color)
Returns light intensity coming from the source to the given MicroFacet. Super-sampling variant.

Specified by:
getIntensity in interface LightSource
Overrides:
getIntensity in class DefaultLightSource
Parameters:
mf - The MicroFacet (point on surface of some solid).
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
color - Pre-allocated double[C] array to hold result - light intensity coming from the source to the given point (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).
Returns:
true if the light source can light on the given point (cannot replace the lights() call!).
See Also:
lights(cz.cuni.jagrlib.MicroFacet, int, int), getDirection(cz.cuni.jagrlib.MicroFacet, int, int, double[])

getDirection

public boolean getDirection(MicroFacet mf,
                            int order,
                            int total,
                            double[] dir)
Returns light direction between the source and the given MicroFacet. Super-sampling variant.

Specified by:
getDirection in interface LightSource
Overrides:
getDirection in class DefaultLightSource
Parameters:
mf - The MicroFacet (point on surface of some solid).
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
dir - Pre-allocated array to hold the result - normalised direction vector from the MicroFacet to the light source.
Returns:
false if the light source is not directional (thus dir is irrelevant).
See Also:
lights(cz.cuni.jagrlib.MicroFacet, int, int), getIntensity(cz.cuni.jagrlib.MicroFacet, int, int, double[])

set

public void set(String key,
                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 Object get(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.