18 #ifndef itkDiscreteMeanCurvatureQuadEdgeMeshFilter_h 19 #define itkDiscreteMeanCurvatureQuadEdgeMeshFilter_h 35 template<
typename TInputMesh,
typename TOutputMesh=TInputMesh >
71 #ifdef ITK_USE_CONCEPT_CHECKING 84 OutputMeshPointer output = this->
GetOutput();
86 OutputQEType *qe = iP.GetEdge();
88 OutputCurvatureType oH(0.);
90 OutputVectorType Laplace;
94 OutputCurvatureType area(0.);
95 OutputVectorType normal;
98 if ( qe != ITK_NULLPTR )
100 if ( qe != qe->GetOnext() )
102 CoefficientType coefficent;
104 OutputQEType *qe_it = qe;
105 OutputQEType *qe_it2;
107 OutputCurvatureType temp_area;
108 OutputCoordType temp_coeff;
110 OutputPointType q0, q1;
111 OutputVectorType face_normal;
115 qe_it2 = qe_it->GetOnext();
116 q0 = output->GetPoint( qe_it->GetDestination() );
117 q1 = output->GetPoint( qe_it2->GetDestination() );
119 temp_coeff = coefficent(output, qe_it);
120 Laplace += temp_coeff * ( iP - q0 );
125 face_normal = TriangleType::ComputeNormal(q0, iP, q1);
126 normal += face_normal;
130 while ( qe_it != qe );
138 if ( normal.GetSquaredNorm() > 0. )
141 Laplace *= 0.25 / area;
142 oH = Laplace * normal;
156 void operator=(
const Self &) ITK_DELETE_FUNCTION;
Superclass::OutputPointIdentifier OutputPointIdentifier
Superclass::OutputCellIdentifier OutputCellIdentifier
DiscreteMeanCurvatureQuadEdgeMeshFilter()
OutputMeshType::QEType OutputQEType
virtual OutputCurvatureType EstimateCurvature(const OutputPointType &iP) override
OutputMeshType::Pointer OutputMeshPointer
Superclass::OutputCurvatureType OutputCurvatureType
OutputMeshType::PointIdentifier OutputPointIdentifier
Superclass::TriangleType TriangleType
OutputCurvatureType ComputeMixedArea(OutputQEType *iQE1, OutputQEType *iQE2)
DiscreteMeanCurvatureQuadEdgeMeshFilter Self
Superclass::OutputCoordType OutputCoordType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
Superclass::OutputPointsContainerIterator OutputPointsContainerIterator
OutputMeshType::PointType OutputPointType
SmartPointer< const Self > ConstPointer
OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
DiscreteCurvatureQuadEdgeMeshFilter< TInputMesh, TOutputMesh > Superclass
Superclass::OutputQEType OutputQEType
static ITK_CONSTEXPR double e
The base of the natural logarithm or Euler's number
Superclass::OutputPointsContainerPointer OutputPointsContainerPointer
Superclass::OutputMeshType OutputMeshType
OutputMeshType::MeshTraits OutputMeshTraits
TriangleHelper< OutputPointType > TriangleType
Superclass::InputMeshType InputMeshType
ConformalMatrixCoefficients< OutputMeshType > CoefficientType
OutputMeshTraits::PixelType OutputCurvatureType
SmartPointer< Self > Pointer
see the following paper title: Discrete Differential-Geometry Operators for Triangulated 2-Manifolds ...
OutputMeshType::CellIdentifier OutputCellIdentifier
Superclass::OutputPointType OutputPointType
Superclass::OutputMeshPointer OutputMeshPointer
Superclass::InputMeshPointer InputMeshPointer
OutputPointType::CoordRepType OutputCoordType
~DiscreteMeanCurvatureQuadEdgeMeshFilter()
void operator=(const Self &) ITK_DELETE_FUNCTION
OutputMeshType::PointsContainerPointer OutputPointsContainerPointer
Superclass::OutputMeshTraits OutputMeshTraits
OutputMeshType * GetOutput()
#define itkConceptMacro(name, concept)
Superclass::OutputVectorType OutputVectorType
InputMeshType::Pointer InputMeshPointer
OutputMeshType::VectorType OutputVectorType
TOutputMesh OutputMeshType