13 #ifndef mitkSlicedGeometry3D_h
14 #define mitkSlicedGeometry3D_h
21 class SliceNavigationController;
22 class NavigationController;
68 itkFactorylessNewMacro(Self);
115 itkGetConstMacro(Slices,
unsigned int);
179 itkGetConstMacro(EvenlySpaced,
bool);
234 unsigned int slices);
258 bool frontside =
true,
259 bool rotated =
false);
314 void PrintSelf(std::ostream &os, itk::Indent indent)
const override;
Abstract base class describing the geometry of a data object.
Base class for all operations in the undo/redo framework.
Describes the geometry of a plane object.
Controls the selection of the slice the associated BaseRenderer will display.
Describes the geometry of a data object consisting of slices.
static const std::string SLICES
Property key for the number of slices.
bool HasReferenceGeometry() const
Check whether a reference geometry has been set.
ScalarType GetLargestExtent(const BaseGeometry *geometry)
virtual void SetEvenlySpaced(bool on=true)
virtual mitk::PlaneGeometry * GetPlaneGeometry(int s) const
Returns the PlaneGeometry of the slice (s).
const mitk::BoundingBox * GetBoundingBox() const override
Get the bounding box of this sliced geometry.
mitkClassMacro(SlicedGeometry3D, BaseGeometry)
void ChangeImageGeometryConsideringOriginOffset(const bool isAnImageGeometry) override
Switch between image geometry and normal geometry with origin correction.
virtual void InitializeSlicedGeometry(unsigned int slices)
Tell this instance how many PlaneGeometries it shall manage. Bounding box and the PlaneGeometries mus...
static const std::string DIRECTION_VECTOR
Property key for the direction vector between slices.
virtual void InitializeEvenlySpaced(mitk::PlaneGeometry *geometry2D, unsigned int slices)
Completely initialize this instance as evenly-spaced with slices parallel to the provided PlaneGeomet...
mitk::SliceNavigationController * GetSliceNavigationController()
Get the SliceNavigationController associated with this geometry.
static const std::string EVENLY_SPACED
Property key for the evenly-spaced flag.
const mitk::BaseGeometry * m_ReferenceGeometry
virtual void SetDirectionVector(const mitk::Vector3D &directionVector)
Set/Get the vector between slices for the evenly-spaced case (m_EvenlySpaced==true).
virtual bool IsValidSlice(int s=0) const
Check whether a slice exists.
void SetImageGeometry(const bool isAnImageGeometry) override
Override to propagate the ImageGeometry flag to all slice geometries.
virtual bool SetPlaneGeometry(mitk::PlaneGeometry *geometry2D, int s)
Set PlaneGeometry of slice s.
virtual void SetReferenceGeometry(const BaseGeometry *referenceGeometry)
Set the reference geometry for reslicing calculations.
virtual void ReinitializePlanes(const Point3D ¢er, const Point3D &referencePoint)
mitk::SliceNavigationController * m_SliceNavigationController
virtual void InitializePlanes(const mitk::BaseGeometry *geometry3D, mitk::AnatomicalPlane orientation, bool top=true, bool frontside=true, bool rotated=false)
Completely initialize this instance as evenly-spaced plane slices parallel to a side of the provided ...
void PreSetSpacing(const mitk::Vector3D &aSpacing) override
PreSetSpacing.
~SlicedGeometry3D() override
static double CalculateSpacing(const mitk::Vector3D &spacing, const mitk::Vector3D &d)
Calculate directed spacing from regular spacing and a direction vector.
virtual void SetSliceNavigationController(mitk::SliceNavigationController *snc)
Set the SliceNavigationController corresponding to this sliced geometry.
mitk::Vector3D AdjustNormal(const mitk::Vector3D &normal) const
double CalculateSpacing(const mitk::Vector3D &direction) const
void ExecuteOperation(Operation *operation) override
Execute an operation on this sliced geometry.
SlicedGeometry3D(const SlicedGeometry3D &other)
void PrintSelf(std::ostream &os, itk::Indent indent) const override
virtual void InitializeEvenlySpaced(mitk::PlaneGeometry *geometry2D, mitk::ScalarType zSpacing, unsigned int slices)
Completely initialize this instance as evenly-spaced with slices parallel to the provided PlaneGeomet...
mitk::Vector3D m_DirectionVector
std::vector< PlaneGeometry::Pointer > m_PlaneGeometries
virtual const BaseGeometry * GetReferenceGeometry() const
Get the reference geometry used for reslicing calculations.
Find image slices visible on a given plane.
itk::BoundingBox< unsigned long, 3, ScalarType > BoundingBox
Standard 3D bounding box type.
AnatomicalPlane
Enumeration of standard anatomical image planes.
double ScalarType
Scalar type used throughout MITK for geometric computations.