Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::PlanarCircle Class Reference

Implementation of PlanarFigure representing a circle through two control points. More...

#include <mitkPlanarCircle.h>

Inheritance diagram for mitk::PlanarCircle:
Inheritance graph
[legend]
Collaboration diagram for mitk::PlanarCircle:
Collaboration graph
[legend]

List of all members.

Public Types

typedef PlanarCircle Self
typedef PlanarFigure Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
bool SetControlPoint (unsigned int index, const Point2D &point, bool createIfDoesNotExist)
 Place figure in its minimal configuration (a point at least) onto the given 2D geometry.
unsigned int GetMinimumNumberOfControlPoints () const
 Circle has 2 control points per definition.
unsigned int GetMaximumNumberOfControlPoints () const
 Circle has 2 control points per definition.

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 PlanarCircle ()
virtual ~PlanarCircle ()
virtual void GeneratePolyLine ()
 Generates the poly-line representation of the planar figure.
virtual void GenerateHelperPolyLine (double mmPerDisplayUnit, unsigned int displayHeight)
 Generates the poly-lines that should be drawn the same size regardless of zoom.
virtual void EvaluateFeaturesInternal ()
 Calculates feature quantities of the planar figure.
virtual void PrintSelf (std::ostream &os, itk::Indent indent) const

Protected Attributes

const unsigned int FEATURE_ID_RADIUS
const unsigned int FEATURE_ID_DIAMETER
const unsigned int FEATURE_ID_AREA

Detailed Description

Implementation of PlanarFigure representing a circle through two control points.

Definition at line 35 of file mitkPlanarCircle.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::PlanarCircle::ConstPointer

Reimplemented from mitk::PlanarFigure.

Definition at line 38 of file mitkPlanarCircle.h.

typedef itk::SmartPointer<Self> mitk::PlanarCircle::Pointer

Reimplemented from mitk::PlanarFigure.

Definition at line 38 of file mitkPlanarCircle.h.

Reimplemented from mitk::PlanarFigure.

Definition at line 38 of file mitkPlanarCircle.h.

Reimplemented from mitk::PlanarFigure.

Definition at line 38 of file mitkPlanarCircle.h.


Constructor & Destructor Documentation

mitk::PlanarCircle::PlanarCircle (  ) [protected]

Definition at line 25 of file mitkPlanarCircle.cpp.

References mitk::PlanarFigure::m_PolyLines, mitk::BoolProperty::New(), mitk::PlanarFigure::ResetNumberOfControlPoints(), and mitk::BaseData::SetProperty().

: FEATURE_ID_RADIUS( this->AddFeature( "Radius", "mm" ) ),
  FEATURE_ID_DIAMETER( this->AddFeature( "Diameter", "mm" ) ),
  FEATURE_ID_AREA( this->AddFeature( "Area", "mm^2" ) )
{
  // Circle has two control points
  this->ResetNumberOfControlPoints( 2 );
  this->SetProperty( "closed", mitk::BoolProperty::New(true) );

  m_PolyLines->InsertElement( 0, VertexContainerType::New());
}
mitk::PlanarCircle::~PlanarCircle (  ) [protected, virtual]

Definition at line 38 of file mitkPlanarCircle.cpp.

{
}

Member Function Documentation

void mitk::PlanarCircle::EvaluateFeaturesInternal (  ) [protected, virtual]

Calculates feature quantities of the planar figure.

Implements mitk::PlanarFigure.

Definition at line 116 of file mitkPlanarCircle.cpp.

{
  // Calculate circle radius and area
  const Point3D &p0 = this->GetWorldControlPoint( 0 );
  const Point3D &p1 = this->GetWorldControlPoint( 1 );

  double radius = p0.EuclideanDistanceTo( p1 );
  double area = vnl_math::pi * radius * radius;

  this->SetQuantity( FEATURE_ID_RADIUS, radius );
  this->SetQuantity( FEATURE_ID_DIAMETER, 2*radius );
  this->SetQuantity( FEATURE_ID_AREA, area );
}
void mitk::PlanarCircle::GenerateHelperPolyLine ( double  mmPerDisplayUnit,
unsigned int  displayHeight 
) [protected, virtual]

Generates the poly-lines that should be drawn the same size regardless of zoom.

Implements mitk::PlanarFigure.

Definition at line 111 of file mitkPlanarCircle.cpp.

{
  // A circle does not require a helper object
}
void mitk::PlanarCircle::GeneratePolyLine (  ) [protected, virtual]

Generates the poly-line representation of the planar figure.

Implements mitk::PlanarFigure.

Definition at line 91 of file mitkPlanarCircle.cpp.

References QuadProgPP::t().

{
  // TODO: start circle at specified boundary point...

  const Point2D &centerPoint = m_ControlPoints->ElementAt( 0 );
  const Point2D &boundaryPoint = m_ControlPoints->ElementAt( 1 );

  double radius = centerPoint.EuclideanDistanceTo( boundaryPoint );

  // Generate poly-line with 64 segments
  m_PolyLines->ElementAt( 0 )->Reserve( 64 );
  for ( int t = 0; t < 64; ++t )
  {
    double alpha = (double) t * vnl_math::pi / 32.0;

    m_PolyLines->ElementAt( 0 )->ElementAt( t )[0] = centerPoint[0] + radius * cos( alpha );
    m_PolyLines->ElementAt( 0 )->ElementAt( t )[1] = centerPoint[1] + radius * sin( alpha );
  }
}
virtual const char* mitk::PlanarCircle::GetClassName (  ) const [virtual]

Reimplemented from mitk::PlanarFigure.

unsigned int mitk::PlanarCircle::GetMaximumNumberOfControlPoints (  ) const [inline, virtual]

Circle has 2 control points per definition.

Implements mitk::PlanarFigure.

Definition at line 60 of file mitkPlanarCircle.h.

  {
    return 2;
  }
unsigned int mitk::PlanarCircle::GetMinimumNumberOfControlPoints (  ) const [inline, virtual]

Circle has 2 control points per definition.

Implements mitk::PlanarFigure.

Definition at line 53 of file mitkPlanarCircle.h.

  {
    return 2;
  }
static Pointer mitk::PlanarCircle::New (  ) [static]
void mitk::PlanarCircle::PrintSelf ( std::ostream &  os,
itk::Indent  indent 
) const [protected, virtual]

Reimplemented from mitk::PlanarFigure.

Definition at line 131 of file mitkPlanarCircle.cpp.

{
  Superclass::PrintSelf( os, indent );
}
bool mitk::PlanarCircle::SetControlPoint ( unsigned int  index,
const Point2D &  point,
bool  createIfDoesNotExist 
) [virtual]

Place figure in its minimal configuration (a point at least) onto the given 2D geometry.

Must be implemented in sub-classes.

Reimplemented from mitk::PlanarFigure.

Definition at line 69 of file mitkPlanarCircle.cpp.

{
  // moving center point
  if(index == 0)
  {
    const Point2D &centerPoint = m_ControlPoints->ElementAt( 0 );
    Point2D boundaryPoint = m_ControlPoints->ElementAt( 1 );
    vnl_vector<float> vec = (point.GetVnlVector() - centerPoint.GetVnlVector());

    boundaryPoint[0] += vec[0];
    boundaryPoint[1] += vec[1];
    m_ControlPoints->InsertElement( 0, point );
    m_ControlPoints->InsertElement( 1, boundaryPoint );
  }
  else if ( index == 1 )
  {
    m_ControlPoints->InsertElement( index, point );
    return true;
  }
  return false;
}

Member Data Documentation

const unsigned int mitk::PlanarCircle::FEATURE_ID_AREA [protected]

Definition at line 86 of file mitkPlanarCircle.h.

const unsigned int mitk::PlanarCircle::FEATURE_ID_DIAMETER [protected]

Definition at line 85 of file mitkPlanarCircle.h.

const unsigned int mitk::PlanarCircle::FEATURE_ID_RADIUS [protected]

Definition at line 84 of file mitkPlanarCircle.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines