1 /*=========================================================================
4 Module: $RCSfile: marContour.h,v $
6 Date: $Date: 2008/10/31 16:32:54 $
7 Version: $Revision: 1.1 $
9 Copyright: (c) 2002, 2003
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notice for more information.
16 =========================================================================*/
17 #ifndef __MAR__KERNEL__CONTOUR__HXX__
18 #define __MAR__KERNEL__CONTOUR__HXX__
21 #include "marObject.h"
23 //#include <kgfo/volume.hxx>
27 #include <vtkUnstructuredGrid.h>
33 * \brief Contour object.
35 class MAR_KERNEL_EXPORT marContour : public marObject
39 /** Default constructor.
41 marContour( double s, marParameters* p = NULL );
43 /** Default destructor.
45 ~marContour( ) { reset( ); };
47 double getS( ) { return( _s ); };
49 void setS( double s ) { _s = s; };
51 /** Adds a contour point.
53 void addContourPoint( double x, double y );
55 /** Resamples current contour, according to actual parameters,
56 * to have more or less points.
60 /** Returns if the contour has any points.
64 /** General analyzers.
66 int getNumberOfPoints( );
67 void getPoint( double* p, int i );
69 /** Quantification analyzers.
71 void calculateVariables();
73 double getArea() { return _area; }
74 double getPerimeter() { return _perimeter; }
75 double getDiameterFromArea() { return _diameterFromArea; }
76 double getDiameterFromPerimeter() { return _diameterFromPerimeter; }
77 double getMinimumDiameter() { return _minimumDiameter; }
78 double getMaximumDiameter() { return _maximumDiameter; }
79 double getAverageDiameter() { return _averageDiameter; }
81 void getMaximumLine( double* pO, double* pF );
82 void getMinimumLine( double* pO, double* pF );
88 void copyFrom( const marObject& from );
89 vtkUnstructuredGrid* Draw( );
92 /** Persistence methods.
94 bool save( std::ofstream& os );
95 bool load( std::ifstream& is );
100 void calculateArea();
101 void calculatePerimeter();
102 void calculateDiameterFromArea() { _diameterFromArea = sqrt( 4.0 * getArea( ) / GTM_PI ) ; }
103 void calculateDiameterFromPerimeter() { _diameterFromPerimeter = getPerimeter( ) / GTM_PI ; }
104 void calculateMinimumMaximumDiameter();
105 void calculateAverageDiameter() { _averageDiameter = ( getMaximumDiameter( ) + getMinimumDiameter( ) ) * 0.5 ; }
107 std::vector< double* > _points;
110 // std::vector< temPoint< float,2 >* > _no_spline_points; // Points that define contour without spline (persistence)
111 std::vector< double* > _no_spline_points; // Points that define contour without spline (persistence)
113 double _s; // paramètre curviligne (entre 0 et 1)
116 vtkUnstructuredGrid* _allData;
120 double _diameterFromArea;
121 double _diameterFromPerimeter;
122 double _minimumDiameter;
123 double _maximumDiameter;
124 double _averageDiameter;
130 #endif // __MAR__KERNEL__CONTOUR__HXX__