Implementation of PlanarFigure representing a circle through two control points. More...
#include <mitkPlanarCircle.h>
Public Types | |
typedef PlanarCircle | Self |
typedef PlanarFigure | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
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 |
Implementation of PlanarFigure representing a circle through two control points.
Definition at line 35 of file mitkPlanarCircle.h.
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.
typedef PlanarCircle mitk::PlanarCircle::Self |
Reimplemented from mitk::PlanarFigure.
Definition at line 38 of file mitkPlanarCircle.h.
Reimplemented from mitk::PlanarFigure.
Definition at line 38 of file mitkPlanarCircle.h.
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.
{ }
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 ¢erPoint = 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 ¢erPoint = 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; }
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.