00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00027 #ifndef __vtkMatrixMathFilter_h
00028 #define __vtkMatrixMathFilter_h
00029 
00030 #include "vtkDataSetAlgorithm.h"
00031 
00032 class vtkCell;
00033 class vtkDataArray;
00034 
00035 class VTK_GRAPHICS_EXPORT vtkMatrixMathFilter : public vtkDataSetAlgorithm
00036 {
00037   
00038   enum
00039   {
00040   NONE = 0,
00041   DETERMINANT,
00042   EIGENVALUE,
00043   EIGENVECTOR,
00044   INVERSE
00045   };
00046   enum
00047   {
00048   POINT_QUALITY = 0,
00049   CELL_QUALITY
00050   };
00051   
00052 
00053 public:
00054   void PrintSelf (ostream&, vtkIndent);
00055   vtkTypeMacro(vtkMatrixMathFilter, vtkDataSetAlgorithm);
00056   static vtkMatrixMathFilter* New ();
00057 
00059 
00061   vtkSetMacro(Operation, int)
00062   vtkGetMacro(Operation, int)
00063   void SetOperationToDeterminant ()
00064     {
00065      this->SetOperation(DETERMINANT);
00066     }
00067   void SetOperationToEigenvalue ()
00068     {
00069      this->SetOperation(EIGENVALUE);
00070     }
00071   void SetOperationToEigenvector ()
00072     {
00073      this->SetOperation(EIGENVECTOR);
00074     }
00075   void SetOperationToInverse ()
00076     {
00077      this->SetOperation(INVERSE);
00078     }
00080 
00081 protected:
00082  ~vtkMatrixMathFilter ();
00083   vtkMatrixMathFilter ();
00084 
00085   virtual int RequestData
00086     (vtkInformation*, vtkInformationVector**, vtkInformationVector*);
00087 
00088   int Operation;
00089 
00090 private:
00091   vtkMatrixMathFilter(const vtkMatrixMathFilter&); 
00092   void operator=(const vtkMatrixMathFilter&); 
00093 };
00094 
00095 #endif // __vtkMatrixMathFilter_h