52 #ifndef PLANEGEOMETRY_H_HEADER_INCLUDED_C1C68A2C 53 #define PLANEGEOMETRY_H_HEADER_INCLUDED_C1C68A2C 59 #include <vnl/vnl_cross.h> 63 template <
class TCoordRep,
unsigned int NPo
intDimension>
65 typedef Line<ScalarType, 3>
Line3D;
82 itkFactorylessNewMacro(
Self);
93 virtual void IndexToWorld(
const Point2D &pt_units,
Point2D &pt_mm)
const;
95 virtual void WorldToIndex(
const Point2D &pt_mm,
Point2D &pt_units)
const;
146 virtual void InitializeStandardPlane(
const BaseGeometry *geometry3D,
149 bool frontside =
true,
150 bool rotated =
false,
165 virtual void InitializeStandardPlane(
const BaseGeometry *geometry3D,
168 bool frontside =
true,
169 bool rotated =
false);
189 virtual void InitializeStandardPlane(
ScalarType width,
194 bool frontside =
true,
195 bool rotated =
false,
203 virtual void InitializeStandardPlane(
ScalarType width,
208 bool frontside =
true,
209 bool rotated =
false,
224 virtual void InitializeStandardPlane(
ScalarType width,
242 virtual void InitializeStandardPlane(
ScalarType width,
256 virtual void InitializeStandardPlane(
const Vector3D &rightVector,
268 virtual void InitializeStandardPlane(
const VnlVector &rightVector,
278 virtual void InitializePlane(
const Point3D &origin,
const Vector3D &normal);
296 static bool CheckRotationMatrix(
AffineTransform3D *transform,
double epsilon=1e-6);
316 virtual bool IsAbove(
const Point3D &pt3d_mm,
bool considerBoundingBox =
false)
const;
338 return (pt3d_mm - GetOrigin()) * GetNormal() / len;
356 if (IsParallel(plane))
358 return SignedDistance(plane->
GetOrigin());
369 bool IntersectionLine(
const PlaneGeometry *plane, Line3D &crossline)
const;
391 double Angle(
const Line3D &line)
const;
401 bool IntersectionPoint(
const Line3D &line,
Point3D &intersectionPoint)
const;
413 bool IntersectionPointParam(
const Line3D &line,
double &t)
const;
426 bool IsOnPlane(
const Point3D &point)
const;
432 bool IsOnPlane(
const Line3D &line)
const;
449 itk::LightObject::Pointer InternalClone()
const override;
452 void ExecuteOperation(
Operation *operation)
override;
560 bool HasReferenceGeometry()
const;
562 static std::vector< int > CalculateDominantAxes(mitk::AffineTransform3D::MatrixType::InternalMatrixType& rotation_matrix);
571 void PrintSelf(std::ostream &os, itk::Indent indent)
const override;
MITKCORE_EXPORT bool operator==(const InteractionEvent &a, const InteractionEvent &b)
ScalarType DistanceFromPlane(const PlaneGeometry *plane) const
Distance of the plane from another plane (bounding-box not considered)
BoundingBoxType::BoundsArrayType BoundsArrayType
Base class of all Operation-classes.
vnl_vector< ScalarType > VnlVector
void PreSetSpacing(const mitk::Vector3D &aSpacing) override
PreSetSpacing.
Line< ScalarType, 3 > Line3D
DataCollection - Class to facilitate loading/accessing structured data.
const mitk::BaseGeometry * m_ReferenceGeometry
MITKCORE_EXPORT bool operator!=(const InteractionEvent &a, const InteractionEvent &b)
ScalarType SignedDistanceFromPlane(const PlaneGeometry *plane) const
Signed distance of the plane from another plane (bounding-box not considered)
#define mitkClassMacro(className, SuperClassName)
ScalarType SignedDistanceFromPlane(const Point3D &pt3d_mm) const
Signed distance of the point from the plane (bounding-box not considered)
const Point3D GetOrigin() const
Get the origin, e.g. the upper-left corner of the plane.
itk::AffineGeometryFrame< ScalarType, 3 >::TransformType AffineTransform3D
ScalarType Distance(const Point3D &pt3d_mm) const
Distance of the point from the geometry (bounding-box not considered)
Describes a two-dimensional, rectangular plane.
BaseGeometry Describes the geometry of a data object.