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,
161 virtual void InitializeStandardPlane(
const BaseGeometry *geometry3D,
164 bool frontside =
true,
165 bool rotated =
false);
185 virtual void InitializeStandardPlane(
ScalarType width,
190 bool frontside =
true,
191 bool rotated =
false,
199 virtual void InitializeStandardPlane(
ScalarType width,
204 bool frontside =
true,
205 bool rotated =
false,
220 virtual void InitializeStandardPlane(
ScalarType width,
238 virtual void InitializeStandardPlane(
ScalarType width,
252 virtual void InitializeStandardPlane(
const Vector3D &rightVector,
264 virtual void InitializeStandardPlane(
const VnlVector &rightVector,
274 virtual void InitializePlane(
const Point3D &origin,
const Vector3D &normal);
312 virtual bool IsAbove(
const Point3D &pt3d_mm,
bool considerBoundingBox =
false)
const;
334 return (pt3d_mm - GetOrigin()) * GetNormal() / len;
352 if (IsParallel(plane))
354 return SignedDistance(plane->
GetOrigin());
365 bool IntersectionLine(
const PlaneGeometry *plane, Line3D &crossline)
const;
387 double Angle(
const Line3D &
line)
const;
396 bool IntersectionPoint(
const Line3D &line,
Point3D &intersectionPoint)
const;
407 bool IntersectionPointParam(
const Line3D &line,
double &t)
const;
420 bool IsOnPlane(
const Point3D &point)
const;
426 bool IsOnPlane(
const Line3D &line)
const;
443 itk::LightObject::Pointer InternalClone()
const override;
446 void ExecuteOperation(
Operation *operation)
override;
554 bool HasReferenceGeometry()
const;
556 static std::vector< int > CalculateDominantAxes(mitk::AffineTransform3D::MatrixType::InternalMatrixType& rotation_matrix);
565 void PrintSelf(std::ostream &os, itk::Indent indent)
const override;
ScalarType DistanceFromPlane(const PlaneGeometry *plane) const
Distance of the plane from another plane (bounding-box not considered)
MITKCORE_EXPORT bool operator!=(const InteractionEvent &a, const InteractionEvent &b)
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.
MITKCORE_EXPORT bool operator==(const InteractionEvent &a, const InteractionEvent &b)
const mitk::BaseGeometry * m_ReferenceGeometry
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)
itk::AffineGeometryFrame< ScalarType, 3 >::TransformType AffineTransform3D
const Point3D GetOrigin() const
Get the origin, e.g. the upper-left corner of the plane.
MITKCORE_EXPORT const ScalarType eps
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.