java.lang.Object
de.grogra.graph.impl.Edge
de.grogra.graph.impl.Node
de.grogra.imp.edit.ToolRoot
de.grogra.imp3d.edit.ToolRoot3D
- All Implemented Interfaces:
Transformation,Manageable,PersistenceCapable,Shareable,UserFields,XObject,Disposable,EventListener,Map,Serializable,EventListener
- Direct Known Subclasses:
TransformTool
This class is the base class for roots of tool graphs which
manipulate 3D objects (the latter are called tool targets).
It defines three coordinate systems:
- The parent coordinate system is the coordinate system of the parent object of the tool target.
- The target coordinate system is the coordinate system
of the tool target. It is computed by the method
computeTargetTransformation(Matrix4d, Matrix4d)based on the global transformation of the parent coordinate system. - The tool coordinate system is the coordinate system of the tool graph. Normally, the translational and rotational components of its transformation matrix are equal to those of the target coordinate system. However, the scaling factors differ to ensure a constant size of the tool handles (independent of the size of the tool target).
Transformation
such that its local coordinates correspond to the tool coordinate system.- Author:
- Ole Kniemeyer
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class de.grogra.graph.impl.Node
Node.AccessorBridge, Node.FieldAttributeAccessor, Node.NTypeNested classes/interfaces inherited from interface de.grogra.util.EventListener
EventListener.Bicast, EventListener.Multicaster -
Field Summary
FieldsFields 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, MAX_RESOLUTION, MIME_TYPE, MIN_RESOLUTION, MIN_UNUSED_SPECIAL_OF_SOURCE, MIN_UNUSED_SPECIAL_OF_TARGET, name$FIELD, RESOLUTION_BIT, RESOLUTION_MASK, resolution$FIELD, USED_BITSFields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static final voidadjustScale(Matrix4d t, CameraBase c, float scale) protected voidThis method is invoked to compute an adjustment of the tool coordinates system.protected voidThis method is invoked to notify the tool root about modifications of attributes of the tool target.protected abstract voidcomputeTargetTransformation(Matrix4d t, Matrix4d parent) This method is invoked to compute the transformation matrix from target coordinates to world coordinates, based on the transformation matrix from parent coordinates to world coordinates.voiddispose()voidThis method implements theEventListener-interface.protected final Matrix4dThis method returns the adjustment matrix from tool coordinates to target coordinates.protected final Matrix4dThis method returns the transformation matrix from parent coordinates to world coordinates.protected final Matrix4dThis method returns the transformation matrix from target coordinates to world coordinates.protected final Matrix4dThis method returns the transformation matrix from tool coordinates to world coordinates.protected booleaninitialize(Tool tool) Initializes this tool root.voidpostTransform(Object object, boolean asNode, Matrix4d in, Matrix4d out, Matrix4d pre, GraphState gs) Implements the change from object's transformationinto the object's post-transformationout.voidpreTransform(Object object, boolean asNode, Matrix4d in, Matrix4d out, GraphState gs) Implements the change from the parent's post-transformationinto the object's transformationout.Methods inherited from class de.grogra.imp.edit.ToolRoot
executeWithWriteLock, getToolTarget, isTargetNodeMethods inherited from class de.grogra.graph.impl.Node
addEdgeBitsTo, addReference, appendBranchNode, appendBranchNode, appendReferencesTo, clone, clone, cloneGraph, dump, dumpTree, dup, dupFrom, dupnew, dupUnmanagedFields, edgeChanged, fieldModified, findAdjacent, findRefinementType, 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, getIgnored, getIndex, getInstantiator, getInt, getLayer, getLong, getManageableType, getName, getNeighbor, getNext, getNType, getNTypeImpl, getObject, getOrCreateEdgeTo, getOrNull, getPersistenceManager, getPredecessor, getProvider, getResolution, getShort, getSource, getStamp, getSuccessor, getSymbol, getSymbolColor, getTarget, getTransaction, getUserField, getUserFieldCount, getXClass, getXData, hasName, initProvider, initXClass, insertBranchNode, insertBranchNode, instantiateGraph, isAncestorOf, isDirection, isEncoarseOf, isManagingInstance, isMarked, isRoot, isSource, isTarget, manageableReadResolve, manageableWriteReplace, newInstance, paramString, removeAll, removeEdgeBitsTo, removeFromChain, removeFromChain, removeReference, setBranch, setBranch, setExtentIndex, setGraphForDeserialization, setIgnored, setLayer, setMark, setName, setResolution, setSuccessor, setSuccessor, specialEdgeAdded, specialEdgeRefModified, specialEdgeRemoved, toString, writeReplaceMethods inherited from class de.grogra.graph.impl.Edge
addEdgeBits, getBitMark, getEdgeBits, getEdgeKeys, getObjectMark, getSpecialEdgeDescriptor, parseEdgeKeys, remove, removeEdgeBits, setBitMark, setEdgeBits, setObjectMark, testEdgeBitsMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface de.grogra.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
-
Field Details
-
$TYPE
-
-
Constructor Details
-
ToolRoot3D
public ToolRoot3D()
-
-
Method Details
-
initialize
Description copied from class:ToolRootInitializes this tool root. This method initializes the fieldToolRoot.toolwith the giventool.- Overrides:
initializein classToolRoot- Parameters:
tool- the tool to which this tool root is associated- Returns:
trueif this tool root actually shall be used for the tool,falseif it shall not be used (e.g., if the actual tool target cannot be manipulated by the tool graph of this tool root).
-
dispose
public void dispose()- Specified by:
disposein interfaceDisposable
-
eventOccured
This method implements theEventListener-interface. If this method is overriden, it has to be invoked by the overriding method.- Specified by:
eventOccuredin interfaceEventListener- Parameters:
e- an event
-
attributeChanged
Description copied from class:ToolRootThis method is invoked to notify the tool root about modifications of attributes of the tool target.- Specified by:
attributeChangedin classToolRoot- Parameters:
a- an array of attributes which have changed
-
preTransform
Description copied from interface:TransformationImplements the change from the parent's post-transformationinto the object's transformationout.- Specified by:
preTransformin interfaceTransformation- Parameters:
object- the object for which the transformation is computedasNode- isobjecta node or an edge?in- the post-transformation of the object's parentout- the tranformation of the object to be computedgs- the graph state in which the computation has to be done
-
postTransform
public void postTransform(Object object, boolean asNode, Matrix4d in, Matrix4d out, Matrix4d pre, GraphState gs) Description copied from interface:TransformationImplements the change from object's transformationinto the object's post-transformationout.- Specified by:
postTransformin interfaceTransformation- Parameters:
object- the object for which the transformation is computedasNode- isobjecta node or an edge?in- the transformation of the objectout- the post-tranformation of the object to be computedpre- the post-transformation of the object's parentgs- the graph state in which the computation has to be done
-
getParentTransformation
This method returns the transformation matrix from parent coordinates to world coordinates.- Returns:
- the transformation matrix of the parent coordinate system
- See Also:
-
getTargetTransformation
This method returns the transformation matrix from target coordinates to world coordinates.- Returns:
- the transformation matrix of the target coordinate system
- See Also:
-
getToolTransformation
This method returns the transformation matrix from tool coordinates to world coordinates.- Returns:
- the transformation matrix of the tool coordinate system
- See Also:
-
getAdjustment
This method returns the adjustment matrix from tool coordinates to target coordinates.- Returns:
- the adjustment between tool and target coordinates
-
computeTargetTransformation
This method is invoked to compute the transformation matrix from target coordinates to world coordinates, based on the transformation matrix from parent coordinates to world coordinates.- Parameters:
t- the computed matrix has to be placed in hereparent- the global transformation of parent coordinates
-
adjustToolTransformation
This method is invoked to compute an adjustment of the tool coordinates system. The invoker setstto the transformation matrix from target coordinates to world coordinates. Implementations of this method may adjustt, e.g., they may set a certain scaling factor between tool coordinates and camera coordinates in order to ensure a fixed size of tool nodes on the 3D view.- Parameters:
t- the tool transformation to be adjustedc- the camera of the tool's 3D view
-
adjustScale
-