Medical Imaging Interaction Toolkit  2018.4.99-663e373e
Medical Imaging Interaction Toolkit
mitk::PlaneGeometry Class Reference

Describes a two-dimensional, rectangular plane. More...

#include <mitkPlaneGeometry.h>

Inheritance diagram for mitk::PlaneGeometry:
Collaboration diagram for mitk::PlaneGeometry:

Public Types

enum  PlaneOrientation { Axial, Sagittal, Frontal, None }
 
typedef PlaneGeometry Self
 
typedef BaseGeometry Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
- Public Types inherited from mitk::BaseGeometry
typedef BaseGeometry Self
 
typedef itk::Object Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
typedef GeometryTransformHolder::TransformType TransformType
 
typedef itk::BoundingBox< unsigned long, 3, ScalarTypeBoundingBoxType
 
typedef BoundingBoxType::BoundsArrayType BoundsArrayType
 
typedef BoundingBoxType::Pointer BoundingBoxPointer
 

Public Member Functions

virtual std::vector< std::string > GetClassHierarchy () const override
 
virtual const char * GetClassName () const
 
Pointer Clone () const
 
virtual void IndexToWorld (const Point2D &pt_units, Point2D &pt_mm) const
 
virtual void WorldToIndex (const Point2D &pt_mm, Point2D &pt_units) const
 
virtual void IndexToWorld (const mitk::Point2D &atPt2d_untis, const mitk::Vector2D &vec_units, mitk::Vector2D &vec_mm) const
 Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm) More...
 
virtual void IndexToWorld (const mitk::Vector2D &vec_units, mitk::Vector2D &vec_mm) const
 Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm) For further information about coordinates types, please see the Geometry documentation. More...
 
virtual void WorldToIndex (const mitk::Point2D &atPt2d_mm, const mitk::Vector2D &vec_mm, mitk::Vector2D &vec_units) const
 Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates. More...
 
virtual void WorldToIndex (const mitk::Vector2D &vec_mm, mitk::Vector2D &vec_units) const
 Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates. For further information about coordinates types, please see the Geometry documentation. More...
 
virtual void InitializeStandardPlane (const BaseGeometry *geometry3D, PlaneOrientation planeorientation=Axial, ScalarType zPosition=0, bool frontside=true, bool rotated=false, bool top=true)
 Initialize a plane with orientation planeorientation (default: axial) with respect to BaseGeometry (default: identity). Spacing also taken from BaseGeometry. More...
 
virtual void InitializeStandardPlane (const BaseGeometry *geometry3D, bool top, PlaneOrientation planeorientation=Axial, bool frontside=true, bool rotated=false)
 Initialize a plane with orientation planeorientation (default: axial) with respect to BaseGeometry (default: identity). Spacing also taken from BaseGeometry. More...
 
virtual void InitializeStandardPlane (ScalarType width, ScalarType height, const AffineTransform3D *transform=nullptr, PlaneOrientation planeorientation=Axial, ScalarType zPosition=0, bool frontside=true, bool rotated=false, bool top=true)
 Initialize a plane with orientation planeorientation (default: axial) with respect to transform (default: identity) given width and height in units. More...
 
virtual void InitializeStandardPlane (ScalarType width, ScalarType height, const Vector3D &spacing, PlaneOrientation planeorientation=Axial, ScalarType zPosition=0, bool frontside=true, bool rotated=false, bool top=true)
 Initialize plane with orientation planeorientation (default: axial) given width, height and spacing. More...
 
virtual void InitializeStandardPlane (ScalarType width, ScalarType height, const Vector3D &rightVector, const Vector3D &downVector, const Vector3D *spacing=nullptr)
 Initialize plane by width and height in pixels, right-/down-vector (itk) to describe orientation in world-space (vectors will be normalized) and spacing (default: 1.0 mm in all directions). More...
 
virtual void InitializeStandardPlane (ScalarType width, ScalarType height, const VnlVector &rightVector, const VnlVector &downVector, const Vector3D *spacing=nullptr)
 Initialize plane by width and height in pixels, right-/down-vector (vnl) to describe orientation in world-space (vectors will be normalized) and spacing (default: 1.0 mm in all directions). More...
 
virtual void InitializeStandardPlane (const Vector3D &rightVector, const Vector3D &downVector, const Vector3D *spacing=nullptr)
 Initialize plane by right-/down-vector (itk) and spacing (default: 1.0 mm in all directions). More...
 
virtual void InitializeStandardPlane (const VnlVector &rightVector, const VnlVector &downVector, const Vector3D *spacing=nullptr)
 Initialize plane by right-/down-vector (vnl) and spacing (default: 1.0 mm in all directions). More...
 
virtual void InitializePlane (const Point3D &origin, const Vector3D &normal)
 Initialize plane by origin and normal (size is 1.0 mm in all directions, direction of right-/down-vector valid but undefined). More...
 
void SetMatrixByVectors (const VnlVector &rightVector, const VnlVector &downVector, ScalarType thickness=1.0)
 Initialize plane by right-/down-vector. More...
 
Vector3D GetNormal () const
 Normal of the plane. More...
 
VnlVector GetNormalVnl () const
 Normal of the plane as VnlVector. More...
 
virtual ScalarType SignedDistance (const Point3D &pt3d_mm) const
 
virtual bool IsAbove (const Point3D &pt3d_mm, bool considerBoundingBox=false) const
 Calculates, whether a point is below or above the plane. There are two different calculation methods, with or without consideration of the bounding box. More...
 
ScalarType DistanceFromPlane (const Point3D &pt3d_mm) const
 Distance of the point from the plane (bounding-box not considered) More...
 
ScalarType SignedDistanceFromPlane (const Point3D &pt3d_mm) const
 Signed distance of the point from the plane (bounding-box not considered) More...
 
ScalarType DistanceFromPlane (const PlaneGeometry *plane) const
 Distance of the plane from another plane (bounding-box not considered) More...
 
ScalarType SignedDistanceFromPlane (const PlaneGeometry *plane) const
 Signed distance of the plane from another plane (bounding-box not considered) More...
 
bool IntersectionLine (const PlaneGeometry *plane, Line3D &crossline) const
 Calculate the intersecting line of two planes. More...
 
unsigned int IntersectWithPlane2D (const PlaneGeometry *plane, Point2D &lineFrom, Point2D &lineTo) const
 Calculate two points where another plane intersects the border of this plane. More...
 
double Angle (const PlaneGeometry *plane) const
 Calculate the angle between two planes. More...
 
double Angle (const Line3D &line) const
 Calculate the angle between the plane and a line. More...
 
bool IntersectionPoint (const Line3D &line, Point3D &intersectionPoint) const
 Calculate intersection point between the plane and a line. More...
 
bool IntersectionPointParam (const Line3D &line, double &t) const
 Calculate line parameter of intersection point between the plane and a line. More...
 
bool IsParallel (const PlaneGeometry *plane) const
 Returns whether the plane is parallel to another plane. More...
 
bool IsOnPlane (const Point3D &point) const
 Returns whether the point is on the plane (bounding-box not considered) More...
 
bool IsOnPlane (const Line3D &line) const
 Returns whether the line is on the plane (bounding-box not considered) More...
 
bool IsOnPlane (const PlaneGeometry *plane) const
 Returns whether the plane is on the plane (bounding-box not considered) More...
 
Point3D ProjectPointOntoPlane (const Point3D &pt) const
 Returns the lot from the point to the plane. More...
 
itk::LightObject::Pointer InternalClone () const override
 clones the geometry More...
 
void ExecuteOperation (Operation *operation) override
 
virtual bool Map (const mitk::Point3D &pt3d_mm, mitk::Point2D &pt2d_mm) const
 Project a 3D point given in mm (pt3d_mm) onto the 2D geometry. The result is a 2D point in mm (pt2d_mm). More...
 
virtual void Map (const mitk::Point2D &pt2d_mm, mitk::Point3D &pt3d_mm) const
 Converts a 2D point given in mm (pt2d_mm) relative to the upper-left corner of the geometry into the corresponding world-coordinate (a 3D point in mm, pt3d_mm). More...
 
virtual void SetSizeInUnits (mitk::ScalarType width, mitk::ScalarType height)
 Set the width and height of this 2D-geometry in units by calling SetBounds. This does not change the extent in mm! More...
 
virtual bool Project (const mitk::Point3D &pt3d_mm, mitk::Point3D &projectedPt3d_mm) const
 Project a 3D point given in mm (pt3d_mm) onto the 2D geometry. The result is a 3D point in mm (projectedPt3d_mm). More...
 
virtual bool Map (const mitk::Point3D &atPt3d_mm, const mitk::Vector3D &vec3d_mm, mitk::Vector2D &vec2d_mm) const
 Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 2D vector in mm (vec2d_mm). More...
 
virtual void Map (const mitk::Point2D &atPt2d_mm, const mitk::Vector2D &vec2d_mm, mitk::Vector3D &vec3d_mm) const
 Converts a 2D vector given in mm (vec2d_mm) relative to the upper-left corner of the geometry into the corresponding world-coordinate (a 3D vector in mm, vec3d_mm). More...
 
virtual bool Project (const mitk::Point3D &atPt3d_mm, const mitk::Vector3D &vec3d_mm, mitk::Vector3D &projectedVec3d_mm) const
 Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 3D vector in mm (projectedVec3d_mm). More...
 
virtual bool Project (const mitk::Vector3D &vec3d_mm, mitk::Vector3D &projectedVec3d_mm) const
 Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 3D vector in mm (projectedVec3d_mm). More...
 
ScalarType Distance (const Point3D &pt3d_mm) const
 Distance of the point from the geometry (bounding-box not considered) More...
 
void SetReferenceGeometry (const mitk::BaseGeometry *geometry)
 Set the geometrical frame of reference in which this PlaneGeometry is placed. More...
 
const BaseGeometryGetReferenceGeometry () const
 Get the geometrical frame of reference for this PlaneGeometry. More...
 
bool HasReferenceGeometry () const
 
- Public Member Functions inherited from mitk::BaseGeometry
Pointer Clone () const
 
const Point3D GetOrigin () const
 Get the origin, e.g. the upper-left corner of the plane. More...
 
void SetOrigin (const Point3D &origin)
 Set the origin, i.e. the upper-left corner of the plane. More...
 
const mitk::Vector3D GetSpacing () const
 Get the spacing (size of a pixel). More...
 
void SetSpacing (const mitk::Vector3D &aSpacing, bool enforceSetSpacing=false)
 Set the spacing (m_Spacing). More...
 
VnlVector GetOriginVnl () const
 Get the origin as VnlVector. More...
 
virtual unsigned int GetFrameOfReferenceID () const
 Get the DICOM FrameOfReferenceID referring to the used world coordinate system. More...
 
virtual void SetFrameOfReferenceID (unsigned int _arg)
 Set the DICOM FrameOfReferenceID referring to the used world coordinate system. More...
 
virtual unsigned long GetIndexToWorldTransformLastModified () const
 
void Modified () const override
 Overload of function Modified() to prohibit several calls of Modified() using the ModifiedLock class. More...
 
virtual bool IsValid () const
 Is this BaseGeometry in a state that is valid? More...
 
void Initialize ()
 Initialize the BaseGeometry. More...
 
void InitializeGeometry (Self *newGeometry) const
 
mitk::AffineTransform3DGetIndexToWorldTransform ()
 Get the transformation used to convert from index to world coordinates. More...
 
const mitk::AffineTransform3DGetIndexToWorldTransform () const
 Get the transformation used to convert from index to world coordinates. More...
 
void SetIndexToWorldTransform (mitk::AffineTransform3D *transform)
 
void SetIndexToWorldTransformByVtkMatrix (vtkMatrix4x4 *vtkmatrix)
 Convenience method for setting the ITK transform (m_IndexToWorldTransform) via an vtkMatrix4x4.The spacing of the new transform is copied to m_spacing. More...
 
void SetIndexToWorldTransformWithoutChangingSpacing (mitk::AffineTransform3D *transform)
 
void SetIndexToWorldTransformByVtkMatrixWithoutChangingSpacing (vtkMatrix4x4 *vtkmatrix)
 Convenience method for setting the ITK transform (m_IndexToWorldTransform) via an vtkMatrix4x4. This function keeps the original spacing. More...
 
vtkMatrix4x4 * GetVtkMatrix ()
 
vtkLinearTransform * GetVtkTransform () const
 Get the m_IndexToWorldTransform as a vtkLinearTransform. More...
 
void SetIdentity ()
 Set the transform to identity, the spacing to 1 and origin to 0. More...
 
void Compose (const TransformType *other, bool pre=false)
 Compose new IndexToWorldTransform with a given transform. More...
 
void Compose (const vtkMatrix4x4 *vtkmatrix, bool pre=false)
 Compose new IndexToWorldTransform with a given vtkMatrix4x4. More...
 
void Translate (const Vector3D &vector)
 Translate the origin by a vector. More...
 
void WorldToIndex (const mitk::Point3D &pt_mm, mitk::Point3D &pt_units) const
 Convert world coordinates (in mm) of a point to (continuous!) index coordinates. More...
 
void WorldToIndex (const mitk::Vector3D &vec_mm, mitk::Vector3D &vec_units) const
 Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates. For further information about coordinates types, please see the Geometry documentation. More...
 
template<unsigned int VIndexDimension>
void WorldToIndex (const mitk::Point3D &pt_mm, itk::Index< VIndexDimension > &index) const
 Convert world coordinates (in mm) of a point to (discrete!) index coordinates. This method rounds to integer indices! For further information about coordinates types, please see the Geometry documentation. More...
 
void IndexToWorld (const mitk::Vector3D &vec_units, mitk::Vector3D &vec_mm) const
 Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm) For further information about coordinates types, please see the Geometry documentation. More...
 
void IndexToWorld (const mitk::Point3D &pt_units, mitk::Point3D &pt_mm) const
 Convert (continuous or discrete) index coordinates of a point to world coordinates (in mm) For further information about coordinates types, please see the Geometry documentation. More...
 
template<unsigned int VIndexDimension>
void IndexToWorld (const itk::Index< VIndexDimension > &index, mitk::Point3D &pt_mm) const
 Convert (discrete) index coordinates of a point to world coordinates (in mm) For further information about coordinates types, please see the Geometry documentation. More...
 
void IndexToWorld (const mitk::Point3D &atPt3d_units, const mitk::Vector3D &vec_units, mitk::Vector3D &vec_mm) const
 Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm) More...
 
void WorldToIndex (const mitk::Point3D &atPt3d_mm, const mitk::Vector3D &vec_mm, mitk::Vector3D &vec_units) const
 Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates. More...
 
template<class TCoordRep >
void ItkPhysicalPointToWorld (const itk::Point< TCoordRep, 3 > &itkPhysicalPoint, mitk::Point3D &pt_mm) const
 Deprecated for use with ITK version 3.10 or newer. Convert ITK physical coordinates of a point (in mm, but without a rotation) into MITK world coordinates (in mm) More...
 
template<class TCoordRep >
void WorldToItkPhysicalPoint (const mitk::Point3D &pt_mm, itk::Point< TCoordRep, 3 > &itkPhysicalPoint) const
 Deprecated for use with ITK version 3.10 or newer. Convert world coordinates (in mm) of a point to ITK physical coordinates (in mm, but without a possible rotation) More...
 
virtual const BoundingBoxTypeGetBoundingBox ()
 
const BoundsArrayType GetBounds () const
 
void SetBounds (const BoundsArrayType &bounds)
 Set the bounding box (in index/unit coordinates) More...
 
void SetFloatBounds (const float bounds[6])
 Set the bounding box (in index/unit coordinates) via a float array. More...
 
void SetFloatBounds (const double bounds[6])
 Set the bounding box (in index/unit coordinates) via a double array. More...
 
VnlVector GetMatrixColumn (unsigned int direction) const
 Get a VnlVector along bounding-box in the specified direction, length is spacing. More...
 
mitk::BoundingBox::Pointer CalculateBoundingBoxRelativeToTransform (const mitk::AffineTransform3D *transform) const
 Calculates a bounding-box around the geometry relative to a coordinate system defined by a transform. More...
 
ScalarType GetExtent (unsigned int direction) const
 Set the time bounds (in ms) More...
 
ScalarType GetExtentInMM (int direction) const
 Get the extent of the bounding-box in the specified direction in mm. More...
 
Vector3D GetAxisVector (unsigned int direction) const
 Get vector along bounding-box in the specified direction in mm. More...
 
virtual bool Is2DConvertable ()
 Checks, if the given geometry can be converted to 2D without information loss e.g. when a 2D image is saved, the matrix is usually cropped to 2x2, and when you load it back to MITK it will be filled with standard values. This function checks, if information would be lost during this procedure. More...
 
Point3D GetCenter () const
 Get the center of the bounding-box in mm. More...
 
double GetDiagonalLength2 () const
 Get the squared length of the diagonal of the bounding-box in mm. More...
 
double GetDiagonalLength () const
 Get the length of the diagonal of the bounding-box in mm. More...
 
Point3D GetCornerPoint (int id) const
 Get the position of the corner number id (in world coordinates) More...
 
Point3D GetCornerPoint (bool xFront=true, bool yFront=true, bool zFront=true) const
 Get the position of a corner (in world coordinates) More...
 
void SetExtentInMM (int direction, ScalarType extentInMM)
 Set the extent of the bounding-box in the specified direction in mm. More...
 
bool IsInside (const mitk::Point3D &p) const
 Test whether the point p (world coordinates in mm) is inside the bounding box. More...
 
bool IsIndexInside (const mitk::Point3D &index) const
 Test whether the point p ((continous!)index coordinates in units) is inside the bounding box. More...
 
template<unsigned int VIndexDimension>
bool IsIndexInside (const itk::Index< VIndexDimension > &index) const
 Convenience method for working with ITK indices. More...
 
virtual void ChangeImageGeometryConsideringOriginOffset (const bool isAnImageGeometry)
 When switching from an Image Geometry to a normal Geometry (and the other way around), you have to. More...
 
virtual bool GetImageGeometry () const
 Is this an ImageGeometry? More...
 
virtual void SetImageGeometry (bool _arg)
 Define that this BaseGeometry is refering to an Image. More...
 
virtual void ImageGeometryOn ()
 
virtual void ImageGeometryOff ()
 
const GeometryTransformHolderGetGeometryTransformHolder () const
 
- Public Member Functions inherited from mitk::OperationActor
 itkTypeMacroNoParent (OperationActor) virtual ~OperationActor()
 

Static Public Member Functions

static const char * GetStaticNameOfClass ()
 
static Pointer New ()
 
static bool CheckRotationMatrix (AffineTransform3D *transform, double epsilon=mitk::eps)
 Check if matrix is a rotation matrix: More...
 
static std::vector< int > CalculateDominantAxes (mitk::AffineTransform3D::MatrixType::InternalMatrixType &rotation_matrix)
 
- Static Public Member Functions inherited from mitk::BaseGeometry
static const char * GetStaticNameOfClass ()
 

Protected Member Functions

 PlaneGeometry ()
 
 PlaneGeometry (const PlaneGeometry &other)
 
 ~PlaneGeometry () override
 
void PrintSelf (std::ostream &os, itk::Indent indent) const override
 
void PreSetSpacing (const mitk::Vector3D &aSpacing) override
 PreSetSpacing. More...
 
void CheckBounds (const BoundsArrayType &bounds) override
 CheckBounds. More...
 
void CheckIndexToWorldTransform (mitk::AffineTransform3D *transform) override
 CheckIndexToWorldTransform. More...
 
- Protected Member Functions inherited from mitk::BaseGeometry
 BaseGeometry ()
 
 BaseGeometry (const BaseGeometry &other)
 
 ~BaseGeometry () override
 
void PrintSelf (std::ostream &os, itk::Indent indent) const override
 
virtual unsigned int GetNDimensions () const
 
bool IsBoundingBoxNull () const
 
bool IsIndexToWorldTransformNull () const
 
void SetVtkMatrixDeepCopy (vtkTransform *vtktransform)
 
void _SetSpacing (const mitk::Vector3D &aSpacing, bool enforceSetSpacing=false)
 

Protected Attributes

const mitk::BaseGeometrym_ReferenceGeometry
 

Additional Inherited Members

- Static Protected Member Functions inherited from mitk::BaseGeometry
static const std::string GetTransformAsString (TransformType *transformType)
 

Detailed Description

Describes a two-dimensional, rectangular plane.

Definition at line 76 of file mitkPlaneGeometry.h.

Member Typedef Documentation

◆ ConstPointer

◆ Pointer

◆ Self

Definition at line 79 of file mitkPlaneGeometry.h.

◆ Superclass

Member Enumeration Documentation

◆ PlaneOrientation

Enumerator
Axial 
Sagittal 
Frontal 
None 

Definition at line 85 of file mitkPlaneGeometry.h.

Constructor & Destructor Documentation

◆ PlaneGeometry() [1/2]

mitk::PlaneGeometry::PlaneGeometry ( )
protected

◆ PlaneGeometry() [2/2]

mitk::PlaneGeometry::PlaneGeometry ( const PlaneGeometry other)
protected

◆ ~PlaneGeometry()

mitk::PlaneGeometry::~PlaneGeometry ( )
overrideprotected

Member Function Documentation

◆ Angle() [1/2]

double mitk::PlaneGeometry::Angle ( const PlaneGeometry plane) const

Calculate the angle between two planes.

Returns
angle in radiants

◆ Angle() [2/2]

double mitk::PlaneGeometry::Angle ( const Line3D line) const

Calculate the angle between the plane and a line.

Returns
angle in radiants

◆ CalculateDominantAxes()

static std::vector< int > mitk::PlaneGeometry::CalculateDominantAxes ( mitk::AffineTransform3D::MatrixType::InternalMatrixType &  rotation_matrix)
static

◆ CheckBounds()

void mitk::PlaneGeometry::CheckBounds ( const BoundsArrayType bounds)
overrideprotectedvirtual

CheckBounds.

This function is called in SetBounds. Assertions can be implemented in this function (see PlaneGeometry.cpp). If you implement this function in a subclass, make sure, that all classes were your class inherits from have an implementation of CheckBounds (e.g. inheritance BaseGeometry <- A <- B. Implementation of CheckBounds in class B needs implementation in A as

Reimplemented from mitk::BaseGeometry.

◆ CheckIndexToWorldTransform()

void mitk::PlaneGeometry::CheckIndexToWorldTransform ( mitk::AffineTransform3D transform)
overrideprotectedvirtual

CheckIndexToWorldTransform.

This function is called in SetIndexToWorldTransform. Assertions can be implemented in this function (see

Reimplemented from mitk::BaseGeometry.

◆ CheckRotationMatrix()

static bool mitk::PlaneGeometry::CheckRotationMatrix ( AffineTransform3D transform,
double  epsilon = mitk::eps 
)
static

Check if matrix is a rotation matrix:

  • determinant is 1?
  • R*R^T is ID? Output warning otherwise.

◆ Clone()

Pointer mitk::PlaneGeometry::Clone ( ) const

◆ Distance()

ScalarType mitk::PlaneGeometry::Distance ( const Point3D pt3d_mm) const
inline

Distance of the point from the geometry (bounding-box not considered)

Definition at line 540 of file mitkPlaneGeometry.h.

◆ DistanceFromPlane() [1/2]

ScalarType mitk::PlaneGeometry::DistanceFromPlane ( const Point3D pt3d_mm) const

Distance of the point from the plane (bounding-box not considered)

◆ DistanceFromPlane() [2/2]

ScalarType mitk::PlaneGeometry::DistanceFromPlane ( const PlaneGeometry plane) const
inline

Distance of the plane from another plane (bounding-box not considered)

Result is 0 if planes are not parallel.

Definition at line 343 of file mitkPlaneGeometry.h.

◆ ExecuteOperation()

void mitk::PlaneGeometry::ExecuteOperation ( Operation operation)
overridevirtual

Implements operation to re-orient the plane

Reimplemented from mitk::BaseGeometry.

◆ GetClassHierarchy()

virtual std::vector<std::string> mitk::PlaneGeometry::GetClassHierarchy ( ) const
inlineoverridevirtual

◆ GetClassName()

virtual const char* mitk::PlaneGeometry::GetClassName ( ) const
virtual

◆ GetNormal()

Vector3D mitk::PlaneGeometry::GetNormal ( ) const

Normal of the plane.

◆ GetNormalVnl()

VnlVector mitk::PlaneGeometry::GetNormalVnl ( ) const

Normal of the plane as VnlVector.

◆ GetReferenceGeometry()

const BaseGeometry* mitk::PlaneGeometry::GetReferenceGeometry ( ) const

Get the geometrical frame of reference for this PlaneGeometry.

◆ GetStaticNameOfClass()

static const char* mitk::PlaneGeometry::GetStaticNameOfClass ( )
inlinestatic

Definition at line 79 of file mitkPlaneGeometry.h.

◆ HasReferenceGeometry()

bool mitk::PlaneGeometry::HasReferenceGeometry ( ) const

◆ IndexToWorld() [1/3]

virtual void mitk::PlaneGeometry::IndexToWorld ( const Point2D pt_units,
Point2D pt_mm 
) const
virtual

◆ IndexToWorld() [2/3]

virtual void mitk::PlaneGeometry::IndexToWorld ( const mitk::Point2D atPt2d_untis,
const mitk::Vector2D vec_units,
mitk::Vector2D vec_mm 
) const
virtual

Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm)

Deprecated:
First parameter (Point2D) is not used. If possible, please use void IndexToWorld(const

Reimplemented in mitk::AbstractTransformGeometry.

◆ IndexToWorld() [3/3]

virtual void mitk::PlaneGeometry::IndexToWorld ( const mitk::Vector2D vec_units,
mitk::Vector2D vec_mm 
) const
virtual

Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm) For further information about coordinates types, please see the Geometry documentation.

Reimplemented in mitk::AbstractTransformGeometry.

◆ InitializePlane()

virtual void mitk::PlaneGeometry::InitializePlane ( const Point3D origin,
const Vector3D normal 
)
virtual

Initialize plane by origin and normal (size is 1.0 mm in all directions, direction of right-/down-vector valid but undefined).

Warning
This function can only produce righthanded coordinate orientation, not lefthanded.

◆ InitializeStandardPlane() [1/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( const BaseGeometry geometry3D,
PlaneOrientation  planeorientation = Axial,
ScalarType  zPosition = 0,
bool  frontside = true,
bool  rotated = false,
bool  top = true 
)
virtual

Initialize a plane with orientation planeorientation (default: axial) with respect to BaseGeometry (default: identity). Spacing also taken from BaseGeometry.

Warning
A former version of this method created a geometry with unit spacing. For unit spacing use
// for in-plane unit spacing:
thisgeometry->SetSizeInUnits(thisgeometry->GetExtentInMM(0),
thisgeometry->GetExtentInMM(1));
// additionally, for unit spacing in normal direction (former version
// did not do this):
thisgeometry->SetExtentInMM(2, 1.0);

◆ InitializeStandardPlane() [2/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( const BaseGeometry geometry3D,
bool  top,
PlaneOrientation  planeorientation = Axial,
bool  frontside = true,
bool  rotated = false 
)
virtual

Initialize a plane with orientation planeorientation (default: axial) with respect to BaseGeometry (default: identity). Spacing also taken from BaseGeometry.

Parameters
topif true, create plane at top, otherwise at bottom (for PlaneOrientation Axial, for other plane locations respectively)

◆ InitializeStandardPlane() [3/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( ScalarType  width,
ScalarType  height,
const AffineTransform3D transform = nullptr,
PlaneOrientation  planeorientation = Axial,
ScalarType  zPosition = 0,
bool  frontside = true,
bool  rotated = false,
bool  top = true 
)
virtual

Initialize a plane with orientation planeorientation (default: axial) with respect to transform (default: identity) given width and height in units.

Rotated means rotated by 180 degrees (1/2 rotation) within the plane. Rotation by 90 degrees (1/4 rotation) is not implemented as of now.

Frontside/Backside: Viewed from below = frontside in the axial case; (radiologist's view versus neuro-surgeon's view, see: http://www.itk.org/Wiki/images/e/ed/DICOM-OrientationDiagram-Radiologist-vs-NeuroSurgeon.png ) Viewed from front = frontside in the coronal case; Viewed from left = frontside in the sagittal case.

Cave/Caution: Currently only RPI, LAI, LPS and RAS in the three standard planes are covered, i.e. 12 cases of 144: 3 standard planes * 48 coordinate orientations = 144 cases.

◆ InitializeStandardPlane() [4/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( ScalarType  width,
ScalarType  height,
const Vector3D spacing,
PlaneOrientation  planeorientation = Axial,
ScalarType  zPosition = 0,
bool  frontside = true,
bool  rotated = false,
bool  top = true 
)
virtual

Initialize plane with orientation planeorientation (default: axial) given width, height and spacing.

◆ InitializeStandardPlane() [5/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( ScalarType  width,
ScalarType  height,
const Vector3D rightVector,
const Vector3D downVector,
const Vector3D spacing = nullptr 
)
virtual

Initialize plane by width and height in pixels, right-/down-vector (itk) to describe orientation in world-space (vectors will be normalized) and spacing (default: 1.0 mm in all directions).

The vectors are normalized and multiplied by the respective spacing before they are set in the matrix.

This overloaded version of InitializeStandardPlane() creates only righthanded coordinate orientations, unless spacing contains 1 or 3 negative entries.

◆ InitializeStandardPlane() [6/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( ScalarType  width,
ScalarType  height,
const VnlVector rightVector,
const VnlVector downVector,
const Vector3D spacing = nullptr 
)
virtual

Initialize plane by width and height in pixels, right-/down-vector (vnl) to describe orientation in world-space (vectors will be normalized) and spacing (default: 1.0 mm in all directions).

The vectors are normalized and multiplied by the respective spacing before they are set in the matrix.

This overloaded version of InitializeStandardPlane() creates only righthanded coordinate orientations, unless spacing contains 1 or 3 negative entries.

◆ InitializeStandardPlane() [7/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( const Vector3D rightVector,
const Vector3D downVector,
const Vector3D spacing = nullptr 
)
virtual

Initialize plane by right-/down-vector (itk) and spacing (default: 1.0 mm in all directions).

The length of the right-/-down-vector is used as width/height in units, respectively. Then, the vectors are normalized and multiplied by the respective spacing before they are set in the matrix.

◆ InitializeStandardPlane() [8/8]

virtual void mitk::PlaneGeometry::InitializeStandardPlane ( const VnlVector rightVector,
const VnlVector downVector,
const Vector3D spacing = nullptr 
)
virtual

Initialize plane by right-/down-vector (vnl) and spacing (default: 1.0 mm in all directions).

The length of the right-/-down-vector is used as width/height in units, respectively. Then, the vectors are normalized and multiplied by the respective spacing before they are set in the matrix.

◆ InternalClone()

itk::LightObject::Pointer mitk::PlaneGeometry::InternalClone ( ) const
overridevirtual

clones the geometry

Overwrite in all sub-classes. Normally looks like:

//## Self::Pointer newGeometry = new Self(*this);
//## newGeometry->UnRegister();
//## return newGeometry.GetPointer();
//##

Implements mitk::BaseGeometry.

Reimplemented in mitk::ThinPlateSplineCurvedGeometry.

◆ IntersectionLine()

bool mitk::PlaneGeometry::IntersectionLine ( const PlaneGeometry plane,
Line3D crossline 
) const

Calculate the intersecting line of two planes.

Returns
true planes are intersecting
false planes do not intersect

◆ IntersectionPoint()

bool mitk::PlaneGeometry::IntersectionPoint ( const Line3D line,
Point3D intersectionPoint 
) const

Calculate intersection point between the plane and a line.

Parameters
intersectionPointintersection point
Returns
true if unique intersection exists, i.e., if line is not on or parallel to the plane

◆ IntersectionPointParam()

bool mitk::PlaneGeometry::IntersectionPointParam ( const Line3D line,
double &  t 
) const

Calculate line parameter of intersection point between the plane and a line.

Parameters
tparameter of line: intersection point is line.GetPoint()+t*line.GetDirection()
Returns
true if unique intersection exists, i.e., if line is not on or parallel to the plane

◆ IntersectWithPlane2D()

unsigned int mitk::PlaneGeometry::IntersectWithPlane2D ( const PlaneGeometry plane,
Point2D lineFrom,
Point2D lineTo 
) const

Calculate two points where another plane intersects the border of this plane.

Returns
number of intersection points (0..2). First interection point (if existing) is returned in lineFrom, second in lineTo.

◆ IsAbove()

virtual bool mitk::PlaneGeometry::IsAbove ( const Point3D pt3d_mm,
bool  considerBoundingBox = false 
) const
virtual

Calculates, whether a point is below or above the plane. There are two different calculation methods, with or without consideration of the bounding box.

Reimplemented in mitk::AbstractTransformGeometry.

◆ IsOnPlane() [1/3]

bool mitk::PlaneGeometry::IsOnPlane ( const Point3D point) const

Returns whether the point is on the plane (bounding-box not considered)

◆ IsOnPlane() [2/3]

bool mitk::PlaneGeometry::IsOnPlane ( const Line3D line) const

Returns whether the line is on the plane (bounding-box not considered)

◆ IsOnPlane() [3/3]

bool mitk::PlaneGeometry::IsOnPlane ( const PlaneGeometry plane) const

Returns whether the plane is on the plane (bounding-box not considered)

Returns
true iff the normal vector of the planes point to the same or the exactly oposit direction and the distance of the planes is < eps

◆ IsParallel()

bool mitk::PlaneGeometry::IsParallel ( const PlaneGeometry plane) const

Returns whether the plane is parallel to another plane.

Returns
true iff the normal vectors both point to the same or exactly oposit direction

◆ Map() [1/4]

virtual bool mitk::PlaneGeometry::Map ( const mitk::Point3D pt3d_mm,
mitk::Point2D pt2d_mm 
) const
virtual

Project a 3D point given in mm (pt3d_mm) onto the 2D geometry. The result is a 2D point in mm (pt2d_mm).

The result is a 2D point in mm (pt2d_mm) relative to the upper-left corner of the geometry. To convert this point into units (e.g., pixels in case of an image), use WorldToIndex.

Returns
true projection was possible
See also
Project(const mitk::Point3D &pt3d_mm, mitk::Point3D &projectedPt3d_mm)

Reimplemented in mitk::AbstractTransformGeometry.

◆ Map() [2/4]

virtual void mitk::PlaneGeometry::Map ( const mitk::Point2D pt2d_mm,
mitk::Point3D pt3d_mm 
) const
virtual

Converts a 2D point given in mm (pt2d_mm) relative to the upper-left corner of the geometry into the corresponding world-coordinate (a 3D point in mm, pt3d_mm).

To convert a 2D point given in units (e.g., pixels in case of an image) into a 2D point given in mm (as required by this method), use IndexToWorld.

Reimplemented in mitk::AbstractTransformGeometry.

◆ Map() [3/4]

virtual bool mitk::PlaneGeometry::Map ( const mitk::Point3D atPt3d_mm,
const mitk::Vector3D vec3d_mm,
mitk::Vector2D vec2d_mm 
) const
virtual

Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 2D vector in mm (vec2d_mm).

The result is a 2D vector in mm (vec2d_mm) relative to the upper-left corner of the geometry. To convert this point into units (e.g., pixels in case of an image), use WorldToIndex.

Returns
true projection was possible
See also
Project(const mitk::Vector3D &vec3d_mm, mitk::Vector3D &projectedVec3d_mm)

Reimplemented in mitk::AbstractTransformGeometry.

◆ Map() [4/4]

virtual void mitk::PlaneGeometry::Map ( const mitk::Point2D atPt2d_mm,
const mitk::Vector2D vec2d_mm,
mitk::Vector3D vec3d_mm 
) const
virtual

Converts a 2D vector given in mm (vec2d_mm) relative to the upper-left corner of the geometry into the corresponding world-coordinate (a 3D vector in mm, vec3d_mm).

To convert a 2D vector given in units (e.g., pixels in case of an image) into a 2D vector given in mm (as required by this method), use IndexToWorld.

Reimplemented in mitk::AbstractTransformGeometry.

◆ New()

static Pointer mitk::PlaneGeometry::New ( )
static

Method for creation through the object factory.

◆ PreSetSpacing()

void mitk::PlaneGeometry::PreSetSpacing ( const mitk::Vector3D aSpacing)
inlineoverrideprotectedvirtual

PreSetSpacing.

These virtual function allows a different beahiour in subclasses. Do implement them in every subclass of BaseGeometry. If not needed, use {Superclass::PreSetSpacing();};

Reimplemented from mitk::BaseGeometry.

Reimplemented in mitk::ThinPlateSplineCurvedGeometry.

Definition at line 575 of file mitkPlaneGeometry.h.

References mitk::operator!=(), and mitk::operator==().

◆ PrintSelf()

void mitk::PlaneGeometry::PrintSelf ( std::ostream &  os,
itk::Indent  indent 
) const
overrideprotected

◆ Project() [1/3]

virtual bool mitk::PlaneGeometry::Project ( const mitk::Point3D pt3d_mm,
mitk::Point3D projectedPt3d_mm 
) const
virtual

Project a 3D point given in mm (pt3d_mm) onto the 2D geometry. The result is a 3D point in mm (projectedPt3d_mm).

Returns
true projection was possible

Reimplemented in mitk::AbstractTransformGeometry.

◆ Project() [2/3]

virtual bool mitk::PlaneGeometry::Project ( const mitk::Point3D atPt3d_mm,
const mitk::Vector3D vec3d_mm,
mitk::Vector3D projectedVec3d_mm 
) const
virtual

Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 3D vector in mm (projectedVec3d_mm).

DEPRECATED. Use Project(vector,vector) instead

Returns
true projection was possible

Reimplemented in mitk::AbstractTransformGeometry.

◆ Project() [3/3]

virtual bool mitk::PlaneGeometry::Project ( const mitk::Vector3D vec3d_mm,
mitk::Vector3D projectedVec3d_mm 
) const
virtual

Project a 3D vector given in mm (vec3d_mm) onto the 2D geometry. The result is a 3D vector in mm (projectedVec3d_mm).

Returns
true projection was possible

Reimplemented in mitk::AbstractTransformGeometry.

◆ ProjectPointOntoPlane()

Point3D mitk::PlaneGeometry::ProjectPointOntoPlane ( const Point3D pt) const

Returns the lot from the point to the plane.

◆ SetMatrixByVectors()

void mitk::PlaneGeometry::SetMatrixByVectors ( const VnlVector rightVector,
const VnlVector downVector,
ScalarType  thickness = 1.0 
)

Initialize plane by right-/down-vector.

Warning
The vectors are set into the matrix as they are, without normalization! This function creates a righthanded IndexToWorldTransform, only a negative thickness could still make it lefthanded.

◆ SetReferenceGeometry()

void mitk::PlaneGeometry::SetReferenceGeometry ( const mitk::BaseGeometry geometry)

Set the geometrical frame of reference in which this PlaneGeometry is placed.

This would usually be the BaseGeometry of the underlying dataset, but setting it is optional.

◆ SetSizeInUnits()

virtual void mitk::PlaneGeometry::SetSizeInUnits ( mitk::ScalarType  width,
mitk::ScalarType  height 
)
virtual

Set the width and height of this 2D-geometry in units by calling SetBounds. This does not change the extent in mm!

For an image, this is the number of pixels in x-/y-direction.

Note
In contrast to calling SetBounds directly, this does not change the extent in mm!

◆ SignedDistance()

virtual ScalarType mitk::PlaneGeometry::SignedDistance ( const Point3D pt3d_mm) const
virtual

◆ SignedDistanceFromPlane() [1/2]

ScalarType mitk::PlaneGeometry::SignedDistanceFromPlane ( const Point3D pt3d_mm) const
inline

Signed distance of the point from the plane (bounding-box not considered)

0 : point is in the direction of the direction vector.

Definition at line 327 of file mitkPlaneGeometry.h.

◆ SignedDistanceFromPlane() [2/2]

ScalarType mitk::PlaneGeometry::SignedDistanceFromPlane ( const PlaneGeometry plane) const
inline

Signed distance of the plane from another plane (bounding-box not considered)

Result is 0 if planes are not parallel.

Definition at line 350 of file mitkPlaneGeometry.h.

References mitk::BaseGeometry::GetOrigin().

◆ WorldToIndex() [1/3]

virtual void mitk::PlaneGeometry::WorldToIndex ( const Point2D pt_mm,
Point2D pt_units 
) const
virtual

◆ WorldToIndex() [2/3]

virtual void mitk::PlaneGeometry::WorldToIndex ( const mitk::Point2D atPt2d_mm,
const mitk::Vector2D vec_mm,
mitk::Vector2D vec_units 
) const
virtual

Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates.

Deprecated:
First parameter (Point2D) is not used. If possible, please use void WorldToIndex(const

Reimplemented in mitk::AbstractTransformGeometry.

◆ WorldToIndex() [3/3]

virtual void mitk::PlaneGeometry::WorldToIndex ( const mitk::Vector2D vec_mm,
mitk::Vector2D vec_units 
) const
virtual

Convert world coordinates (in mm) of a vector vec_mm to (continuous!) index coordinates. For further information about coordinates types, please see the Geometry documentation.

Reimplemented in mitk::AbstractTransformGeometry.

Member Data Documentation

◆ m_ReferenceGeometry

const mitk::BaseGeometry* mitk::PlaneGeometry::m_ReferenceGeometry
protected

Definition at line 567 of file mitkPlaneGeometry.h.


The documentation for this class was generated from the following file: