1 #ifndef __FPA__BASE__FASTMARCHING__H__
2 #define __FPA__BASE__FASTMARCHING__H__
4 #include <fpa/Base/Dijkstra.h>
12 template< class V, class C, class VV, class VC, class B >
14 : public Dijkstra< V, C, VV, VC, B >
20 typedef VV TVertexValue;
21 typedef B TBaseFilter;
23 // Standard class typdedefs
24 typedef FastMarching Self;
25 typedef Dijkstra< V, C, VV, VC, B > Superclass;
26 typedef itk::SmartPointer< Self > Pointer;
27 typedef itk::SmartPointer< const Self > ConstPointer;
29 typedef typename Superclass::TResult TResult;
30 typedef typename Superclass::TTraits TTraits;
33 typedef typename Superclass::_TFrontId _TFrontId;
34 typedef typename Superclass::_TNode _TNode;
35 typedef typename Superclass::_TNodes _TNodes;
36 struct _TNodeEikonalSort
38 bool operator()( const _TNode& a, const _TNode& b ) const
39 { return( a.Result < b.Result ); }
43 itkTypeMacro( FastMarching, Dijkstra );
47 virtual ~FastMarching( );
49 virtual bool _UpdateNeigh( _TNode& nn, const _TNode& n );
52 * Eikonal solution method
54 * This method returns the computed time and a flag indicating if the
55 * determinant was valid.
57 bool _SolveEikonal( double& re, const _TNode& n, const double& F );
60 // Purposely not implemented
61 FastMarching( const Self& );
62 void operator=( const Self& );
65 static const double LargestValue;
72 #include <fpa/Base/FastMarching.hxx>
74 #endif // __FPA__BASE__FASTMARCHING__H__