de.grogra.imp3d.shading
Class VolumeFunction

java.lang.Object
  extended by de.grogra.graph.impl.Edge
      extended by de.grogra.graph.impl.Node
          extended by de.grogra.imp3d.shading.ChannelMapNode
              extended by de.grogra.imp3d.shading.VolumeFunction
All Implemented Interfaces:
ChannelMap, Manageable, PersistenceCapable, Shareable, UserFields, XObject, Map, java.io.Serializable
Direct Known Subclasses:
Gradient, Granite, Julia, Leopard, Mandel, VolumeTurbulence, Wood

public abstract class VolumeFunction
extends ChannelMapNode

A VolumeFunction is a ChannelMap which assigns a float-value to each point in 3D-space. The input channels are X, Y, Z; the output value is placed in all output channels except w-channels, which are set to 1.

Author:
Ole Kniemeyer
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class de.grogra.graph.impl.Node
Node.AccessorBridge, Node.FieldAttributeAccessor, Node.NType
 
Nested classes/interfaces inherited from interface de.grogra.util.Map
Map.Chain
 
Field Summary
static Node.NType $TYPE
           
static Node.NType.Field frequency$FIELD
           
static Node.NType.Field phase$FIELD
           
static Node.NType.Field waveForm$FIELD
           
 
Fields inherited from class de.grogra.imp3d.shading.ChannelMapNode
AMBIENT, COLOR, COLOR_2, DIFFUSE_TRANSPARENCY, DISPLACEMENT, EMISSIVE, FIRST_OP, INPUT, input$FIELD, MIN_UNUSED_SPECIAL_OF_TARGET, SECOND_OP, SHININESS, SPECULAR, TRANSPARENCY, TRANSPARENCY_SHININESS
 
Fields inherited from class de.grogra.graph.impl.Node
ADDITIONAL_FIELDS, bits, DELETED, EXTENT_BIT, EXTENT_MASK, extentIndex$FIELD, extentTail$FIELD, HAS_OBSERVERS, IS_INTERPRETIVE, isInterpretive$FIELD, LAST_EXTENT_INDEX, layer$FIELD, MARK, mark$FIELD, MIME_TYPE, MIN_UNUSED_SPECIAL_OF_SOURCE, name$FIELD, USED_BITS
 
Fields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP
 
Constructor Summary
VolumeFunction()
           
 
Method Summary
 void accept(ChannelMapNodeVisitor visitor)
           
 float getFloatValue(ChannelData data, int channel)
           
protected abstract  float getFloatValue(float x, float y, float z)
          Evaluates the volume function at the given point.
 float getFrequency()
           
 float getPhase()
           
 FloatToFloat getWaveForm()
           
 void setFrequency(float value)
           
 void setPhase(float value)
           
 
Methods inherited from class de.grogra.imp3d.shading.ChannelMapNode
accept, getInput, getObjectValue, setInput
 
Methods inherited from class de.grogra.graph.impl.Node
addEdgeBitsTo, addReference, appendBranchNode, appendBranchNode, appendReferencesTo, clone, clone, cloneGraph, dump, dumpTree, dup, dupUnmanagedFields, edgeChanged, fieldModified, findAdjacent, get, getAccessor, getAccessor, getAttributes, getAxisParent, getBoolean, getBranch, getBranchLength, getBranchNode, getBranchTail, getByte, getChar, getCommonAncestor, getCurrentGraphState, getDirectChildCount, getDouble, getEdgeAttributeAccessor, getEdgeAttributes, getEdgeBitsTo, getEdgeTo, getExtentIndex, getFirst, getFirstEdge, getFloat, getGraph, getId, getIndex, getInstantiator, getInt, getLayer, getLong, getManageableType, getName, getNeighbor, getNext, getNType, getNTypeImpl, getObject, getOrCreateEdgeTo, getOrNull, getPersistenceManager, getPredecessor, getProvider, getShort, getSource, getStamp, getSuccessor, getSymbol, getSymbolColor, getTarget, getTransaction, getUserField, getUserFieldCount, getXClass, getXData, hasName, initProvider, initXClass, insertBranchNode, insertBranchNode, instantiateGraph, isAncestorOf, isDirection, isManagingInstance, isMarked, isRoot, isSource, isTarget, manageableReadResolve, manageableWriteReplace, newInstance, paramString, removeAll, removeEdgeBitsTo, removeFromChain, removeFromChain, removeReference, setBranch, setBranch, setExtentIndex, setGraphForDeserialization, setLayer, setMark, setName, setSuccessor, setSuccessor, specialEdgeAdded, specialEdgeRefModified, specialEdgeRemoved, toString, writeReplace
 
Methods inherited from class de.grogra.graph.impl.Edge
addEdgeBits, getBitMark, getEdgeBits, getObjectMark, getSpecialEdgeDescriptor, parseEdgeKeys, remove, removeEdgeBits, setBitMark, setEdgeBits, setObjectMark, testEdgeBits
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.grogra.math.ChannelMap
getStamp
 
Methods inherited from interface de.grogra.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
 

Field Detail

$TYPE

public static final Node.NType $TYPE

frequency$FIELD

public static final Node.NType.Field frequency$FIELD

phase$FIELD

public static final Node.NType.Field phase$FIELD

waveForm$FIELD

public static final Node.NType.Field waveForm$FIELD
Constructor Detail

VolumeFunction

public VolumeFunction()
Method Detail

accept

public void accept(ChannelMapNodeVisitor visitor)
Overrides:
accept in class ChannelMapNode

getFloatValue

public float getFloatValue(ChannelData data,
                           int channel)
Specified by:
getFloatValue in interface ChannelMap
Overrides:
getFloatValue in class ChannelMapNode

getFloatValue

protected abstract float getFloatValue(float x,
                                       float y,
                                       float z)
Evaluates the volume function at the given point.

Parameters:
x - x-coordinate of 3D-point
y - y-coordinate of 3D-point
z - z-coordinate of 3D-point
Returns:
the function value at the 3D-point (x, y, z)

getFrequency

public float getFrequency()

getPhase

public float getPhase()

getWaveForm

public FloatToFloat getWaveForm()

setFrequency

public void setFrequency(float value)

setPhase

public void setPhase(float value)