00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkDeformableSimplexMesh3DBalloonForceFilter.h,v $ 00005 Language: C++ 00006 Date: $Date: 2004/07/27 16:06:20 $ 00007 Version: $Revision: 1.3 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 #ifndef __itkDeformableSimplexMesh3DBalloonForceFilter_H 00018 #define __itkDeformableSimplexMesh3DBalloonForceFilter_H 00019 00020 #include "itkDeformableSimplexMesh3DFilter.h" 00021 #include "itkMesh.h" 00022 #include "itkVector.h" 00023 #include "itkImage.h" 00024 #include "itkConstNeighborhoodIterator.h" 00025 #include "itkCovariantVector.h" 00026 00027 #include <set> 00028 00029 namespace itk 00030 { 00031 00042 template <class TInputMesh, class TOutputMesh> 00043 class DeformableSimplexMesh3DBalloonForceFilter : public DeformableSimplexMesh3DFilter<TInputMesh, TOutputMesh> 00044 { 00045 public: 00047 typedef DeformableSimplexMesh3DBalloonForceFilter Self; 00048 00050 typedef DeformableSimplexMesh3DFilter<TInputMesh, TOutputMesh> Superclass; 00051 00053 typedef SmartPointer<Self> Pointer; 00054 typedef SmartPointer<const Self> ConstPointer; 00055 00057 itkNewMacro(Self); 00058 00060 itkTypeMacro(DeformableSimplexMesh3DBalloonForceFilter,DeformableSimplexMesh3DFilter); 00061 00063 typedef TInputMesh InputMeshType; 00064 typedef TOutputMesh OutputMeshType; 00065 typedef typename Superclass::PointType PointType; 00066 typedef typename Superclass::GradientIndexType GradientIndexType; 00067 typedef typename Superclass::GradientIndexValueType GradientIndexValueType; 00068 00069 00070 /* Mesh pointer definition. */ 00071 typedef typename InputMeshType::Pointer InputMeshPointer; 00072 typedef typename OutputMeshType::Pointer OutputMeshPointer; 00073 00074 typedef typename InputMeshType::PixelType PixelType; 00075 00076 typedef Image<PixelType, 3> GradientIntensityImageType; 00077 typedef typename GradientIntensityImageType::Pointer GradientIntensityImagePointer; 00078 00079 itkSetMacro(Kappa, double); 00080 itkGetMacro(Kappa, double); 00081 00082 00083 protected: 00084 DeformableSimplexMesh3DBalloonForceFilter(); 00085 ~DeformableSimplexMesh3DBalloonForceFilter(); 00086 DeformableSimplexMesh3DBalloonForceFilter(const Self&) 00087 { 00088 } 00089 void operator=(const Self&) 00090 { 00091 } 00092 void PrintSelf(std::ostream& os, Indent indent) const; 00093 00094 00098 virtual void ComputeExternalForce(SimplexMeshGeometry * data); 00099 00105 double m_Kappa; 00106 00107 }; // end of class 00108 00109 00110 } // end namespace itk 00111 00112 #ifndef ITK_MANUAL_INSTANTIATION 00113 #include "itkDeformableSimplexMesh3DBalloonForceFilter.txx" 00114 #endif 00115 00116 #endif //__itkDeformableSimplexMesh3DBalloonForceFilter_H