Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOMETRY2D_H_HEADER_INCLUDED_C1F4D8E0
00020 #define GEOMETRY2D_H_HEADER_INCLUDED_C1F4D8E0
00021
00022 #include "mitkCommon.h"
00023 #include "mitkGeometry3D.h"
00024
00025 namespace mitk {
00026
00069 class MITK_CORE_EXPORT Geometry2D : public mitk::Geometry3D
00070 {
00071 public:
00072 mitkClassMacro(Geometry2D, mitk::Geometry3D);
00073 itkNewMacro(Self);
00074
00086 virtual bool Map(const mitk::Point3D &pt3d_mm, mitk::Point2D &pt2d_mm) const;
00087
00097 virtual void Map(const mitk::Point2D &pt2d_mm, mitk::Point3D &pt3d_mm) const;
00098
00103 virtual void IndexToWorld(
00104 const mitk::Point2D &pt_units, mitk::Point2D &pt_mm) const;
00105
00110 virtual void WorldToIndex(
00111 const mitk::Point2D &pt_mm, mitk::Point2D &pt_units) const;
00112
00121 virtual void IndexToWorld(
00122 const mitk::Point2D &atPt2d_units, const mitk::Vector2D &vec_units,
00123 mitk::Vector2D &vec_mm) const;
00124
00133 virtual void WorldToIndex(
00134 const mitk::Point2D &atPt2d_mm, const mitk::Vector2D &vec_mm,
00135 mitk::Vector2D &vec_units) const;
00136
00145 virtual void SetSizeInUnits(mitk::ScalarType width, mitk::ScalarType height);
00146
00153 virtual bool Project(const mitk::Point3D &pt3d_mm,
00154 mitk::Point3D &projectedPt3d_mm) const;
00155
00168 virtual bool Map(const mitk::Point3D & atPt3d_mm,
00169 const mitk::Vector3D &vec3d_mm, mitk::Vector2D &vec2d_mm) const;
00170
00180 virtual void Map(const mitk::Point2D & atPt2d_mm,
00181 const mitk::Vector2D &vec2d_mm, mitk::Vector3D &vec3d_mm) const;
00182
00189 virtual bool Project(const mitk::Point3D & atPt3d_mm,
00190 const mitk::Vector3D &vec3d_mm, mitk::Vector3D &projectedVec3d_mm) const;
00191
00197 inline ScalarType Distance(const Point3D& pt3d_mm) const
00198 {
00199 return fabs(SignedDistance(pt3d_mm));
00200 }
00201
00207 virtual ScalarType SignedDistance(const Point3D& pt3d_mm) const;
00208
00214 virtual bool IsAbove(const Point3D& pt3d_mm) const;
00215
00216 virtual void SetIndexToWorldTransform(mitk::AffineTransform3D* transform);
00217
00218 virtual void SetExtentInMM(int direction, ScalarType extentInMM);
00219
00220 virtual AffineGeometryFrame3D::Pointer Clone() const;
00221
00229 void SetReferenceGeometry( mitk::Geometry3D *geometry );
00230
00234 Geometry3D *GetReferenceGeometry() const;
00235 bool HasReferenceGeometry() const;
00236
00237
00238 protected:
00239 Geometry2D();
00240
00241 virtual ~Geometry2D();
00242
00243 virtual void InitializeGeometry(Self * newGeometry) const;
00244
00245 virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
00246
00251 mutable mitk::ScalarType m_ScaleFactorMMPerUnitX;
00252
00257 mutable mitk::ScalarType m_ScaleFactorMMPerUnitY;
00258
00259 mitk::Geometry3D *m_ReferenceGeometry;
00260 };
00261
00262 }
00263
00264 #endif