00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkDeformableSimplexMesh3DBalloonForceFilter.h,v $ 00005 Language: C++ 00006 Date: $Date: 2006/02/05 20:57:46 $ 00007 Version: $Revision: 1.4 $ 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 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 00073 /* Mesh pointer definition. */ 00074 typedef typename InputMeshType::Pointer InputMeshPointer; 00075 typedef typename OutputMeshType::Pointer OutputMeshPointer; 00076 00077 typedef typename InputMeshType::PixelType PixelType; 00078 00079 typedef Image<PixelType, 3> GradientIntensityImageType; 00080 typedef typename GradientIntensityImageType::Pointer GradientIntensityImagePointer; 00081 00082 itkSetMacro(Kappa, double); 00083 itkGetMacro(Kappa, double); 00084 00085 00086 protected: 00087 DeformableSimplexMesh3DBalloonForceFilter(); 00088 ~DeformableSimplexMesh3DBalloonForceFilter(); 00089 DeformableSimplexMesh3DBalloonForceFilter(const Self&) 00090 { 00091 } 00092 void operator=(const Self&) 00093 { 00094 } 00095 void PrintSelf(std::ostream& os, Indent indent) const; 00096 00097 00101 virtual void ComputeExternalForce(SimplexMeshGeometry * data); 00102 00108 double m_Kappa; 00109 00110 }; // end of class 00111 00112 00113 } // end namespace itk 00114 00115 #ifndef ITK_MANUAL_INSTANTIATION 00116 #include "itkDeformableSimplexMesh3DBalloonForceFilter.txx" 00117 #endif 00118 00119 #endif //__itkDeformableSimplexMesh3DBalloonForceFilter_H 00120