vtf-logo

ISS_Interpolate.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00008 #if !defined(__geom_ISS_Interpolate_h__)
00009 #define __geom_ISS_Interpolate_h__
00010 
00011 #if defined(DEBUG_geom) && !defined(DEBUG_ISS_Interpolate)
00012 #define DEBUG_ISS_Interpolate
00013 #endif
00014 
00015 #include "ISS_SimplexQuery.h"
00016 #include "ISS_VertexField.h"
00017 
00018 BEGIN_NAMESPACE_GEOM
00019 
00021 
00029 template<class ISS, 
00030          typename F = typename ISS::Number>
00031 class ISS_Interpolate {
00032   //
00033   // Private types.
00034   //
00035 
00036 private:
00037 
00039   typedef ISS IssType;
00041   typedef typename IssType::SizeType SizeType;
00042 
00043   //
00044   // Public types.
00045   //
00046 
00047 public:
00048 
00050   typedef typename IssType::Number Number;
00052   typedef typename IssType::Vertex Vertex;
00053 
00054   //
00055   // Field types.
00056   //
00057 
00059   typedef F Field;
00061   typedef ads::Array<1,Field,false> FieldContainer;
00063 
00067   typedef typename FieldContainer::parameter_type 
00068   FieldParameterType;
00070 
00074   typedef typename FieldContainer::void_pointer FieldVoidPointer;
00075 
00076   //
00077   // Data.
00078   //
00079 
00080 private:
00081 
00083   ISS_SimplexQuery<ISS> _simplexQuery;
00085   ISS_VertexField<ISS,Field> _vertexField;
00086 
00087   //
00088   // Not implemented.
00089   //
00090 
00091 private:
00092 
00094   ISS_Interpolate();
00095 
00097   ISS_Interpolate&
00098   operator=(const ISS_Interpolate&);
00099 
00100 public:
00101 
00102   //--------------------------------------------------------------------------
00105 
00107 
00111   template <bool A2>
00112   ISS_Interpolate(const IssType& iss,
00113                   const ads::Array<1,Field,A2>& fields) :
00114     _simplexQuery(iss),
00115     _vertexField(iss, fields)
00116   {}
00117 
00119 
00124   ISS_Interpolate(const IssType& iss,
00125                   const SizeType num_vertices, 
00126                   FieldVoidPointer fields) :
00127     _simplexQuery(iss),
00128     _vertexField(iss, num_vertices, fields)
00129   {}
00130 
00132   ISS_Interpolate(const ISS_Interpolate& other) :
00133     _simplexQuery(other._simplexQuery),
00134     _vertexField(other._vertexField)
00135   {}
00136 
00138   ~ISS_Interpolate()
00139   {}
00140 
00142   //--------------------------------------------------------------------------
00145 
00147   FieldParameterType
00148   operator()(const Vertex& x) const {
00149     return _vertexField.interpolate
00150       (_simplexQuery.computeMinimumDistanceIndex(x), x);
00151   }
00152 
00154 };
00155 
00156 END_NAMESPACE_GEOM
00157 
00158 #endif

Generated on Fri Aug 24 12:55:54 2007 for Computational Geometry Package by  doxygen 1.4.7