#pragma once#include"itkParticleRegionNeighborhood.h"#include"ParticleImplicitSurfaceDomain.h"#include"vnl/vnl_vector_fixed.h"namespaceitk{template<classTImage>classITK_EXPORTParticleSurfaceNeighborhood:publicParticleRegionNeighborhood<TImage::ImageDimension>{public:typedefTImageImageType;typedefParticleSurfaceNeighborhoodSelf;typedefParticleRegionNeighborhood<TImage::ImageDimension>Superclass;typedefSmartPointer<Self>Pointer;typedefSmartPointer<constSelf>ConstPointer;typedefWeakPointer<constSelf>ConstWeakPointer;typedeftypenameImageType::PixelTypeNumericType;typedeftypenameSuperclass::PointTreeTypePointTreeType;typedefvnl_vector_fixed<NumericType,TImage::ImageDimension>GradientVectorType;itkStaticConstMacro(Dimension,unsignedint,TImage::ImageDimension);itkNewMacro(Self);itkTypeMacro(ParticleSurfaceNeighborhood,ParticleRegionNeighborhood);typedeftypenameSuperclass::PointTypePointType;typedeftypenameSuperclass::PointContainerTypePointContainerType;typedefshapeworks::ParticleImplicitSurfaceDomain<typenameTImage::PixelType>DomainType;typedeftypenameSuperclass::PointVectorTypePointVectorType;virtualPointVectorTypeFindNeighborhoodPoints(constPointType&,intidx,std::vector<double>&,std::vector<double>&,double)constoverride;virtualPointVectorTypeFindNeighborhoodPoints(constPointType&,intidx,std::vector<double>&,double)constoverride;// virtual unsigned int FindNeighborhoodPoints(const PointType &, double, PointVectorType &) const;voidSetWeightingEnabled(boolis_enabled){m_WeightingEnabled=is_enabled;}boolIsWeightingEnabled()const{returnm_WeightingEnabled;}voidSetForceEuclidean(boolis_enabled){m_ForceEuclidean=is_enabled;}boolIsForceEuclidean()const{returnm_ForceEuclidean;}voidPrintSelf(std::ostream&os,Indentindent)const{Superclass::PrintSelf(os,indent);}protected:ParticleSurfaceNeighborhood():m_FlatCutoff(0.30){}virtual~ParticleSurfaceNeighborhood(){};private:ParticleSurfaceNeighborhood(constSelf&);//purposely not implementedvoidoperator=(constSelf&);//purposely not implementeddoublem_FlatCutoff;boolm_WeightingEnabled{true};boolm_ForceEuclidean{false};};}// end namespace itk#include"itkParticleSurfaceNeighborhood.txx"