de.grogra.turtle
Class Scale

java.lang.Object
  extended by de.grogra.graph.impl.Edge
      extended by de.grogra.graph.impl.Node
          extended by de.grogra.turtle.Scale
All Implemented Interfaces:
Transformation, Manageable, PersistenceCapable, Shareable, UserFields, XObject, Map, java.io.Serializable

public class Scale
extends Node
implements Transformation

A Scale node scales the local coordinate system using the scaling factors scaleX, scaleY and scaleZ. In general, the scaling factors may differ. However, there is the constructor Scale(float) which initializes the three factors with the same value such that a uniform scaling is performed.
This class declares two predicates: Scale.Pattern allows one to write Scale(x,y,z) in a pattern of an XL query. Scale.XPattern is useful for uniform Scale nodes since it allows one to write Scale(x) in a pattern. It uses scaleX to obtain the value for the predicate argument.

Author:
Ole Kniemeyer
See Also:
Serialized Form

Nested Class Summary
static class Scale.Pattern
           
static class Scale.XPattern
           
 
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
           
 float scaleX
          Scaling factor in x-direction.
static Node.NType.Field scaleX$FIELD
           
 float scaleY
          Scaling factor in y-direction.
static Node.NType.Field scaleY$FIELD
           
 float scaleZ
          Scaling factor in z-direction.
static Node.NType.Field scaleZ$FIELD
           
 
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, MIN_UNUSED_SPECIAL_OF_TARGET, name$FIELD, USED_BITS
 
Fields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP
 
Constructor Summary
Scale()
          Creates a new Scale node whose scaling factors are set to one.
Scale(float scale)
          Creates a new Scale node whose scaling factors are set to scale.
Scale(float scaleX, float scaleY, float scaleZ)
          Creates a new Scale node whose scaling factors are set to the specified values.
 
Method Summary
protected  Node.NType getNTypeImpl()
          This method returns the Node.NType which describes the managed fields of the class of this node.
protected  Node newInstance()
          This method returns a new instance of the class of this node.
 void postTransform(java.lang.Object object, boolean asNode, Matrix4d in, Matrix4d out, Matrix4d pre, GraphState gs)
          Implements the change from object's transformation in to the object's post-transformation out.
 void preTransform(java.lang.Object object, boolean asNode, Matrix4d in, Matrix4d out, GraphState gs)
          Implements the change from the parent's post-transformation in to the object's transformation out.
 
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, 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, 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.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
 

Field Detail

$TYPE

public static final Node.NType $TYPE

scaleX

public float scaleX
Scaling factor in x-direction.


scaleX$FIELD

public static final Node.NType.Field scaleX$FIELD

scaleY

public float scaleY
Scaling factor in y-direction.


scaleY$FIELD

public static final Node.NType.Field scaleY$FIELD

scaleZ

public float scaleZ
Scaling factor in z-direction.


scaleZ$FIELD

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

Scale

public Scale()
Creates a new Scale node whose scaling factors are set to one.


Scale

public Scale(float scale)
Creates a new Scale node whose scaling factors are set to scale. This is a uniform scaling.

Parameters:
scale - scaling factor

Scale

public Scale(float scaleX,
             float scaleY,
             float scaleZ)
Creates a new Scale node whose scaling factors are set to the specified values.

Parameters:
scaleX - scaling factor in x-direction
scaleY - scaling factor in y-direction
scaleZ - scaling factor in z-direction
Method Detail

getNTypeImpl

protected Node.NType getNTypeImpl()
Description copied from class: Node
This method returns the Node.NType which describes the managed fields of the class of this node. This method has to be implemented in every concrete subclass.

Overrides:
getNTypeImpl in class Node
Returns:
type describing the managed fields of the class of this node

newInstance

protected Node newInstance()
Description copied from class: Node
This method returns a new instance of the class of this node. This method has to be implemented in every concrete subclass.

Overrides:
newInstance in class Node
Returns:
new instance of class of this node

postTransform

public void postTransform(java.lang.Object object,
                          boolean asNode,
                          Matrix4d in,
                          Matrix4d out,
                          Matrix4d pre,
                          GraphState gs)
Description copied from interface: Transformation
Implements the change from object's transformation in to the object's post-transformation out.

Specified by:
postTransform in interface Transformation
Parameters:
object - the object for which the transformation is computed
asNode - is object a node or an edge?
in - the transformation of the object
out - the post-tranformation of the object to be computed
pre - the post-transformation of the object's parent
gs - the graph state in which the computation has to be done

preTransform

public void preTransform(java.lang.Object object,
                         boolean asNode,
                         Matrix4d in,
                         Matrix4d out,
                         GraphState gs)
Description copied from interface: Transformation
Implements the change from the parent's post-transformation in to the object's transformation out.

Specified by:
preTransform in interface Transformation
Parameters:
object - the object for which the transformation is computed
asNode - is object a node or an edge?
in - the post-transformation of the object's parent
out - the tranformation of the object to be computed
gs - the graph state in which the computation has to be done