IvfMat3d.h

00001 //
00002 // Copyright 1999-2006 by Structural Mechanics, Lund University.
00003 //
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Library General Public
00006 // License as published by the Free Software Foundation; either
00007 // version 2 of the License, or (at your option) any later version.
00008 //
00009 // This library is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // Library General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU Library General Public
00015 // License along with this library; if not, write to the Free Software
00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00017 // USA.
00018 //
00019 // Please report all bugs and problems to "ivf@byggmek.lth.se".
00020 //
00021 //
00022 // Written by Jonas Lindemann
00023 //
00024 
00025 #ifndef _CIvfMat3d_h_
00026 #define _CIvfMat3d_h_
00027 
00028 #include <ivf/ivfconfig.h>
00029 #include <ivfmath/IvfMathBase.h>
00030 #include <ivfmath/IvfVec3d.h>
00031 
00039 class IVFMATH_API CIvfMat3d : public CIvfMathBase {
00040 private:
00041         double m_matrix[3][3];
00042 public:
00044         CIvfMat3d();
00045 
00047         CIvfMat3d(CIvfMat3d& M);
00048 
00050         CIvfMat3d(double scalar);
00051 
00053         virtual ~CIvfMat3d();
00054 
00056         void one();
00057 
00059         void identity();
00060 
00062         void zero();
00063 
00064 #ifdef IVF_HAVE_IOSTREAM
00065 
00066         void print(std::ostream &out);
00067 #else
00068 
00069         void print(ostream &out);
00070 #endif
00071 
00077         void setComponent(int row, int col, double value);
00078 
00080         double getComponent(int row, int col);
00081 
00083         void setColumn(int col, double v1, double v2, double v3);
00084 
00086         void setRow(int row, double v1, double v2, double v3);
00087 
00089         CIvfMat3d& t();
00090 
00092         CIvfMat3d& inv();
00093 
00095         CIvfMat3d& operator=(CIvfMat3d& A);
00096 
00098         CIvfMat3d& operator=(double a);
00099 
00101         CIvfMat3d& operator+=(CIvfMat3d& A);
00102 
00104         CIvfMat3d& operator-=(CIvfMat3d& A);
00105 
00107         CIvfMat3d& operator*(CIvfMat3d& A);
00108 
00110         CIvfVec3d& operator*(CIvfVec3d& v);
00111 
00113         CIvfMat3d& operator*(double scalar);
00114 
00116         CIvfMat3d& operator/(double scalar);
00117 
00119         CIvfMat3d& operator+(CIvfMat3d& A);
00120 };
00121 
00122 IVFMATH_API CIvfMat3d& ivfGetTempMatrix3d();
00123 
00126 #endif 

Generated on Fri Sep 1 15:36:47 2006 for Interactive Visualisation Framework - Ivf++ by  doxygen 1.4.6-NO