/*========================================================================= Program: ShapeWorks: Particle-based Shape Correspondence & Visualization Module: $RCSfile: itkParticleSurfaceNeighborhood.h,v $ Date: $Date: 2011/03/24 01:17:34 $ Version: $Revision: 1.2 $ Author: $Author: wmartin $ Copyright (c) 2009 Scientific Computing and Imaging Institute. See ShapeWorksLicense.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information.=========================================================================*/#ifndef __itkParticleSurfaceNeighborhood_h#define __itkParticleSurfaceNeighborhood_h#include"itkParticleRegionNeighborhood.h"#include"itkParticleImplicitSurfaceDomain.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;typedefParticleImplicitSurfaceDomain<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;}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};};}// end namespace itk#if ITK_TEMPLATE_EXPLICIT#include"Templates/itkParticleSurfaceNeighborhood+-.h"#endif#if ITK_TEMPLATE_TXX#include"itkParticleSurfaceNeighborhood.txx"#endif#include"itkParticleSurfaceNeighborhood.txx"#endif