de.grogra.turtle
Class HDir

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

public class HDir
extends Node
implements Transformation

Set the local z-axis (the turtle's head axis) so that it encompasses the given angle to the world's up axis. This is performed by a rotation in the plane spanned by the world's up axis and the former head direction of the turtle.

Author:
Reinhard Hemmerling
See Also:
Serialized Form

Nested Class Summary
static class HDir.Pattern
           
 
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 angle
          The rotation angle in degrees.
static Node.NType.Field angle$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
HDir()
          Creates a new HDir node with an initial angle of 0 degrees.
HDir(float angle)
          Creates a new HDir node which set's the head axis of the turtle such that it spans the given angle in degrees to the world's up-axis.
 
Method Summary
 float getAngle()
           
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 node, 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 node, boolean asNode, Matrix4d in, Matrix4d out, GraphState gs)
          Implements the change from the parent's post-transformation in to the object's transformation out.
 void setAngle(float value)
           
 
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

angle

public float angle
The rotation angle in degrees.


angle$FIELD

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

HDir

public HDir()
Creates a new HDir node with an initial angle of 0 degrees.


HDir

public HDir(float angle)
Creates a new HDir node which set's the head axis of the turtle such that it spans the given angle in degrees to the world's up-axis.

Parameters:
angle - angle between head and world's up direction in degrees
Method Detail

getAngle

public float getAngle()

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 node,
                          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:
node - 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 node,
                         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:
node - 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

setAngle

public void setAngle(float value)