00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkDeformableSimplexMesh3DBalloonForceFilter.h,v $ 00005 Language: C++ 00006 Date: $Date: 2009-05-12 17:26:20 $ 00007 Version: $Revision: 1.7 $ 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 Portions of this code are covered under the VTK copyright. 00013 See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details. 00014 00015 This software is distributed WITHOUT ANY WARRANTY; without even 00016 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00017 PURPOSE. See the above copyright notices for more information. 00018 00019 =========================================================================*/ 00020 #ifndef __itkDeformableSimplexMesh3DBalloonForceFilter_h 00021 #define __itkDeformableSimplexMesh3DBalloonForceFilter_h 00022 00023 #include "itkDeformableSimplexMesh3DFilter.h" 00024 #include "itkMesh.h" 00025 #include "itkVector.h" 00026 #include "itkImage.h" 00027 #include "itkConstNeighborhoodIterator.h" 00028 #include "itkCovariantVector.h" 00029 00030 #include <set> 00031 00032 namespace itk 00033 { 00034 00045 template <class TInputMesh, class TOutputMesh> 00046 class ITK_EXPORT DeformableSimplexMesh3DBalloonForceFilter : public DeformableSimplexMesh3DFilter<TInputMesh, TOutputMesh> 00047 { 00048 public: 00050 typedef DeformableSimplexMesh3DBalloonForceFilter Self; 00051 00053 typedef DeformableSimplexMesh3DFilter<TInputMesh, TOutputMesh> Superclass; 00054 00056 typedef SmartPointer<Self> Pointer; 00057 typedef SmartPointer<const Self> ConstPointer; 00058 00060 itkNewMacro(Self); 00061 00063 itkTypeMacro(DeformableSimplexMesh3DBalloonForceFilter,DeformableSimplexMesh3DFilter); 00064 00066 typedef TInputMesh InputMeshType; 00067 typedef TOutputMesh OutputMeshType; 00068 typedef typename Superclass::PointType PointType; 00069 typedef typename Superclass::GradientIndexType GradientIndexType; 00070 typedef typename Superclass::GradientIndexValueType GradientIndexValueType; 00071 00072 /* Mesh pointer definition. */ 00073 typedef typename InputMeshType::Pointer InputMeshPointer; 00074 typedef typename OutputMeshType::Pointer OutputMeshPointer; 00075 00076 typedef typename InputMeshType::PixelType PixelType; 00077 00078 typedef Image<PixelType, 3> GradientIntensityImageType; 00079 typedef typename GradientIntensityImageType::Pointer GradientIntensityImagePointer; 00080 00081 itkSetMacro(Kappa, double); 00082 itkGetConstMacro(Kappa, double); 00083 00084 00085 protected: 00086 DeformableSimplexMesh3DBalloonForceFilter(); 00087 ~DeformableSimplexMesh3DBalloonForceFilter(); 00088 DeformableSimplexMesh3DBalloonForceFilter(const Self&) 00089 { 00090 } 00091 void operator=(const Self&) 00092 { 00093 } 00094 void PrintSelf(std::ostream& os, Indent indent) const; 00095 00096 00100 virtual void ComputeExternalForce(SimplexMeshGeometry * data); 00101 00107 double m_Kappa; 00108 00109 }; // end of class 00110 00111 00112 } // end namespace itk 00113 00114 #ifndef ITK_MANUAL_INSTANTIATION 00115 #include "itkDeformableSimplexMesh3DBalloonForceFilter.txx" 00116 #endif 00117 00118 #endif //__itkDeformableSimplexMesh3DBalloonForceFilter_H 00119