artofillusion.procedural
Class FunctionModule

java.lang.Object
  extended by artofillusion.procedural.Module
      extended by artofillusion.procedural.FunctionModule

public class FunctionModule
extends Module

This is a Module which outputs a user defined function of its input, y = f(x). It is defined by a set of points (x,y). For other values of x, the output is determined by interpolation.


Field Summary
static short LINEAR
           
static short SMOOTH_INTERPOLATE
           
 
Fields inherited from class artofillusion.procedural.Module
linkFrom, linkFromIndex
 
Constructor Summary
FunctionModule(java.awt.Point position)
           
 
Method Summary
 void calcSize()
          Calculate the size on the screen of this module.
 Module duplicate()
          Create a duplicate of this module.
 boolean edit(ProcedureEditor editor, Scene theScene)
          This is an old form of edit() that exists only to maintain compatibility with old plugins.
 double getAverageValue(int which, double blur)
          Get the average value of the specified output port.
 short getMethod()
          Get the method for interpolating between the set values (LINEAR or SMOOTH_INTERPOLATE).
 boolean getRepeat()
          Get whether the function should repeat outside the range [0,1].
 double getValueError(int which, double blur)
          Get the uncertainty in the value of the specified output port.
 void getValueGradient(int which, Vec3 grad, double blur)
          Get the gradient of the value of the specified output port.
 double[] getX()
          Get the list of x (input) values.
 double[] getY()
          Get the list of y (output) values.
 void init(PointInfo p)
          This method initializes the module in preparation for evaluating the procedure at a new point.
 void readFromStream(java.io.DataInputStream in, Scene theScene)
          Read in the module's parameters from an input stream.
 void setFunction(double[] x, double[] y)
          Set the lists of (x,y) pairs that define the function.
 void setMethod(short method)
          Set the method for interpolating between the set values (LINEAR or SMOOTH_INTERPOLATE).
 void setRepeat(boolean repeat)
          Set whether the function should repeat outside the range [0,1].
 void writeToStream(java.io.DataOutputStream out, Scene theScene)
          Write out the module's parameters to an output stream.
 
Methods inherited from class artofillusion.procedural.Module
checkFeedback, draw, getBounds, getClickedPort, getColor, getInputIndex, getInputPorts, getName, getOutputIndex, getOutputPorts, inputConnected, layout, setInput, setPosition
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LINEAR

public static final short LINEAR
See Also:
Constant Field Values

SMOOTH_INTERPOLATE

public static final short SMOOTH_INTERPOLATE
See Also:
Constant Field Values
Constructor Detail

FunctionModule

public FunctionModule(java.awt.Point position)
Method Detail

getX

public double[] getX()
Get the list of x (input) values.


getY

public double[] getY()
Get the list of y (output) values.


setFunction

public void setFunction(double[] x,
                        double[] y)
Set the lists of (x,y) pairs that define the function.

Parameters:
x - the list of x values
y - the list of y values. These must be in the range [0,1], and be in increasing order

getRepeat

public boolean getRepeat()
Get whether the function should repeat outside the range [0,1].


setRepeat

public void setRepeat(boolean repeat)
Set whether the function should repeat outside the range [0,1].


getMethod

public short getMethod()
Get the method for interpolating between the set values (LINEAR or SMOOTH_INTERPOLATE).


setMethod

public void setMethod(short method)
Set the method for interpolating between the set values (LINEAR or SMOOTH_INTERPOLATE).


init

public void init(PointInfo p)
Description copied from class: Module
This method initializes the module in preparation for evaluating the procedure at a new point. The default implementation does nothing. Subclasses whose output depends on the point should override this method.

Overrides:
init in class Module

getAverageValue

public double getAverageValue(int which,
                              double blur)
Description copied from class: Module
Get the average value of the specified output port. If the specified output port does not have a value type of NUMBER, the result is undefined. Blur specifies the amount of smoothing to use. Subclasses which can return values should override this method.

Overrides:
getAverageValue in class Module

getValueError

public double getValueError(int which,
                            double blur)
Description copied from class: Module
Get the uncertainty in the value of the specified output port. If the specified output port does not have a value type of NUMBER, the result is undefined. Blur specifies the amount of smoothing to use. Subclasses which can return values should override this method.

Overrides:
getValueError in class Module

getValueGradient

public void getValueGradient(int which,
                             Vec3 grad,
                             double blur)
Description copied from class: Module
Get the gradient of the value of the specified output port. If the specified output port does not have a value type of NUMBER, the result is undefined. Blur specifies the amount of smoothing to use. Subclasses which can return values should override this method.

Overrides:
getValueGradient in class Module

calcSize

public void calcSize()
Description copied from class: Module
Calculate the size on the screen of this module. The default implementation makes it large enough to display the name of the module.

Overrides:
calcSize in class Module

duplicate

public Module duplicate()
Description copied from class: Module
Create a duplicate of this module. Subclasses with adjustable parameters should override this.

Overrides:
duplicate in class Module

writeToStream

public void writeToStream(java.io.DataOutputStream out,
                          Scene theScene)
                   throws java.io.IOException
Description copied from class: Module
Write out the module's parameters to an output stream. Subclasses with editable parameters should override this method.

Overrides:
writeToStream in class Module
Throws:
java.io.IOException

readFromStream

public void readFromStream(java.io.DataInputStream in,
                           Scene theScene)
                    throws java.io.IOException
Description copied from class: Module
Read in the module's parameters from an input stream. Subclasses with editable parameters should override this method.

Overrides:
readFromStream in class Module
Throws:
java.io.IOException

edit

public boolean edit(ProcedureEditor editor,
                    Scene theScene)
Description copied from class: Module
This is an old form of edit() that exists only to maintain compatibility with old plugins. Subclasses should override the other form, not this one.

Overrides:
edit in class Module


Copyright © 1999-2011 by Peter Eastman.