Computer Assited Medical Intervention Tool Kit
version 4.1
|
Represents a hierarchy of frames. More...
#include <Frame.h>
Inherits camitk::InterfaceFrame.
Public Member Functions | |
vtkSmartPointer< vtkAxesActor > | getFrameAxisActor () override |
Gives the 3D representation of the frame (based on xyd arrows) More... | |
bool | getFrameVisibility (Viewer *viewer) const override |
Get the Component Frame visibility for a given viewer. More... | |
void | removeFrameChild (InterfaceFrame *frame) override |
If the parent frame keeps track of its children, when a child is deleted it should warn its parent. More... | |
void | setFrameVisibility (Viewer *viewer, bool visible) override |
Set the Component Frame visible for a given viewer. More... | |
is the name of the frame | |
Default constructor with transformation is the vtk transformtation to express the current frame coordinates into its parent frame. If no transform is givent the default transform is set to the identity matrix. is the base frame in the begin of the hierarchical system. If no parent is given, the default parent is set to NULL and considered as the World frame. | |
Frame (vtkSmartPointer< vtkTransform > transform=nullptr, Frame *parentFrame=nullptr) | |
~Frame () override | |
Default Destructor. More... | |
const QString & | getFrameName () const override |
Hierarchy accessors / Modifyers. More... | |
void | setFrameName (QString name) override |
Set the Frame Unique identifyer. More... | |
InterfaceFrame * | getParentFrame () const override |
Get the parent frame. More... | |
void | setParentFrame (InterfaceFrame *parent, bool keepTransform=true) override |
Set the parent frame to the parameter frame. More... | |
const QVector< InterfaceFrame * > & | getChildrenFrame () const override |
Get the Children Frames from the current Frame in the Frame Hierarchy The Frame hierarchy may not be the same as the Component Hierarchy. More... | |
const vtkSmartPointer< vtkTransform > | getTransformFromWorld () const override |
Transforms accessors / Modifyers. More... | |
const vtkSmartPointer< vtkTransform > | getTransform () const override |
Get a the transformation with respect to the parent frame. More... | |
const vtkSmartPointer< vtkTransform > | getTransformFromFrame (InterfaceFrame *frame) const override |
Get a COPY of the transformation with respect to another frame. More... | |
void | setTransform (vtkSmartPointer< vtkTransform > transform) override |
Set the current input frame position (according to its parent Frame) More... | |
void | resetTransform () override |
Set the current frame transform to identity. More... | |
void | translate (double x, double y, double z) override |
Apply a translation relative to the current position. More... | |
void | rotate (double aroundX, double aroundY, double aroundZ) override |
Apply rotations relative to the current position in the alphabetical order (X, Y, Z). More... | |
void | rotateVTK (double aroundX, double aroundY, double aroundZ) override |
Apply a rotation relative to the current position, using the VTK rotation order (Z, X, Y) More... | |
void | setTransformTranslation (double x, double y, double z) override |
Set the translation part of the 3D space transformation of the current frame. More... | |
void | setTransformTranslationVTK (double x, double y, double z) override |
Set the translation part of the 3D space transformation of the current frame. More... | |
void | setTransformRotation (double aroundX, double aroundY, double aroundZ) override |
Set the rotation part of the 3D space transformation of the current frame. More... | |
void | setTransformRotationVTK (double aroundX, double aroundY, double aroundZ) override |
Set the rotation part of the 3D space transformation of the current frame. More... | |
void | initAttributes () |
Public Member Functions inherited from camitk::InterfaceFrame | |
virtual | ~InterfaceFrame ()=default |
empty virtual destructor, to avoid memory leak More... | |
Protected Member Functions | |
QVector< InterfaceFrame * > | computeDescendants (InterfaceFrame *) |
Compute all the descendants of the input frame. More... | |
Protected Attributes | |
QVector< InterfaceFrame * > | childrenFrame |
List of children Frames to keep track of Frame hierarchy. More... | |
QString | frameName |
Frame unique identifier. More... | |
InterfaceFrame * | parentFrame |
The Parent Frame. More... | |
vtkSmartPointer< vtkTransformPolyDataFilter > | representationTransformFilter |
Transform Filter to store the transformation for the Frame's 3D representation. More... | |
vtkSmartPointer< vtkTransform > | transformParentToMe |
Transformation to represent my points (expressed in my frame) in my parent's frame. More... | |
vtkSmartPointer< vtkTransform > | transformWorldToMe |
Transformation to represent my points (expressed in my frame) in the world's frame. More... | |
Private Member Functions | |
void | addFrameChild (InterfaceFrame *frame) override |
When the current Frame is set to parent, it must update its children list. More... | |
Private Attributes | |
vtkSmartPointer< vtkAxesActor > | axes |
Geometric representation of the frame (vtkAxes) More... | |
QMap< Viewer *, bool > | frameViewers |
List of Viewers in which the frame is visible. More... | |
Static Private Attributes | |
static int | nbTotalFrames = 0 |
To be able to give a default unique identifier to each created frame. More... | |
Represents a hierarchy of frames.
Each frame is represented by its parent frame (by default the World frame) and a linear transformation from its parent frame ; i.e. the transformation to represents my points (expressed in my frame) in my parent's frame.
Frames are in a tree hierarchy, in a top down way.
The frame hierarchy only changes the REPRESENTATION of Components, not Components themselves To obtain the real point position of child components, one should apply getWorldTransformation to them.
When a frame moves, it should move from its parent, not from the world frame (except if its parent frame is the world frame).
camitk::Frame::Frame | ( | vtkSmartPointer< vtkTransform > | transform = nullptr , |
Frame * | parentFrame = nullptr |
||
) |
|
override |
Default Destructor.
References childrenFrame, frameViewers, parentFrame, camitk::InterfaceFrame::removeFrameChild(), and camitk::InterfaceFrame::setParentFrame().
|
overrideprivatevirtual |
When the current Frame is set to parent, it must update its children list.
Implements camitk::InterfaceFrame.
References childrenFrame.
Referenced by Frame().
|
protected |
Compute all the descendants of the input frame.
References camitk::InterfaceFrame::getChildrenFrame().
Referenced by setParentFrame().
|
overridevirtual |
Get the Children Frames from the current Frame in the Frame Hierarchy The Frame hierarchy may not be the same as the Component Hierarchy.
Implements camitk::InterfaceFrame.
References childrenFrame.
|
overridevirtual |
Gives the 3D representation of the frame (based on xyd arrows)
Implements camitk::InterfaceFrame.
References axes, and transformWorldToMe.
|
overridevirtual |
Hierarchy accessors / Modifyers.
Get the Frame Unique identifyer (can be set by user)
Implements camitk::InterfaceFrame.
References frameName.
Referenced by setParentFrame().
|
overridevirtual |
Get the Component Frame visibility for a given viewer.
Implements camitk::InterfaceFrame.
References frameViewers.
|
overridevirtual |
|
overridevirtual |
Get a the transformation with respect to the parent frame.
Implements camitk::InterfaceFrame.
References transformParentToMe.
|
overridevirtual |
Get a COPY of the transformation with respect to another frame.
Implements camitk::InterfaceFrame.
References camitk::InterfaceFrame::getTransformFromWorld(), and transformWorldToMe.
Referenced by setParentFrame().
|
overridevirtual |
Transforms accessors / Modifyers.
Get a the transformation with respect to the world frame
Implements camitk::InterfaceFrame.
References transformWorldToMe.
Referenced by Frame().
void camitk::Frame::initAttributes | ( | ) |
Constructors helpers Private method to initialize private attributes (called only in constrctors but in all constructors)
References axes, childrenFrame, frameName, nbTotalFrames, parentFrame, representationTransformFilter, transformParentToMe, and transformWorldToMe.
Referenced by Frame().
|
overridevirtual |
If the parent frame keeps track of its children, when a child is deleted it should warn its parent.
Implements camitk::InterfaceFrame.
References childrenFrame.
Referenced by setParentFrame().
|
overridevirtual |
Set the current frame transform to identity.
In other words, the current frame and its parent share the same 3D location.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Apply rotations relative to the current position in the alphabetical order (X, Y, Z).
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Apply a rotation relative to the current position, using the VTK rotation order (Z, X, Y)
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
|
overridevirtual |
Set the Component Frame visible for a given viewer.
Implements camitk::InterfaceFrame.
References frameViewers.
|
overridevirtual |
Set the parent frame to the parameter frame.
During the parent transition you have the choice to keep or not the frame transform. If you keep the frame's initial transform after the parent transition, the frame's position will change as its transform's target frame changes. If you decide not to keep the initial frame's transfor, this one is updated during the parent transition in order to keep the original frame position (in the world frame).
Caution: if the parent frame in parameter is either the current frame or one of its descendant, the parent frame is set to the world frame.
Implements camitk::InterfaceFrame.
References camitk::InterfaceFrame::addFrameChild(), computeDescendants(), getFrameName(), camitk::InterfaceFrame::getFrameName(), getTransformFromFrame(), camitk::InterfaceFrame::getTransformFromWorld(), parentFrame, removeFrameChild(), camitk::InterfaceFrame::removeFrameChild(), camitk::InterfaceFrame::setParentFrame(), setTransform(), transformParentToMe, and transformWorldToMe.
Referenced by Frame().
|
overridevirtual |
Set the current input frame position (according to its parent Frame)
transform | The 3D transform of the current frame to its parent. |
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
Referenced by Frame(), and setParentFrame().
|
overridevirtual |
Set the rotation part of the 3D space transformation of the current frame.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Set the rotation part of the 3D space transformation of the current frame.
This translation uses the VTK rotation order (Z, X, Y) system.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Set the translation part of the 3D space transformation of the current frame.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Set the translation part of the 3D space transformation of the current frame.
This translation uses the VTK rotation order (Z, X, Y) system.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
overridevirtual |
Apply a translation relative to the current position.
Implements camitk::InterfaceFrame.
References representationTransformFilter, transformParentToMe, and transformWorldToMe.
|
private |
Geometric representation of the frame (vtkAxes)
Referenced by getFrameAxisActor(), and initAttributes().
|
protected |
List of children Frames to keep track of Frame hierarchy.
Referenced by addFrameChild(), getChildrenFrame(), initAttributes(), removeFrameChild(), and ~Frame().
|
protected |
Frame unique identifier.
Referenced by getFrameName(), initAttributes(), and setFrameName().
|
private |
List of Viewers in which the frame is visible.
Referenced by getFrameVisibility(), setFrameVisibility(), and ~Frame().
|
staticprivate |
To be able to give a default unique identifier to each created frame.
Referenced by initAttributes().
|
protected |
The Parent Frame.
If it is NULL, then the parent is the World Frame.
Referenced by Frame(), getParentFrame(), initAttributes(), setParentFrame(), and ~Frame().
|
protected |
Transform Filter to store the transformation for the Frame's 3D representation.
Referenced by initAttributes(), resetTransform(), rotate(), rotateVTK(), setTransform(), setTransformRotation(), setTransformRotationVTK(), setTransformTranslation(), setTransformTranslationVTK(), and translate().
|
protected |
Transformation to represent my points (expressed in my frame) in my parent's frame.
Transformation to apply to this (and children) data to place them in my parent's frame.
Referenced by Frame(), getTransform(), initAttributes(), resetTransform(), rotate(), rotateVTK(), setParentFrame(), setTransform(), setTransformRotation(), setTransformRotationVTK(), setTransformTranslation(), setTransformTranslationVTK(), and translate().
|
protected |
Transformation to represent my points (expressed in my frame) in the world's frame.
i.e. Transformation to apply to this (and children) data to place them in the world's frame.
This transformation is always re-calculated and stored only for convenience purpose. It can not be set by a user.
Referenced by Frame(), getFrameAxisActor(), getTransformFromFrame(), getTransformFromWorld(), initAttributes(), resetTransform(), rotate(), rotateVTK(), setParentFrame(), setTransform(), setTransformRotation(), setTransformRotationVTK(), setTransformTranslation(), setTransformTranslationVTK(), and translate().