diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h deleted file mode 100644 index cd2f278862b34ea40573a79ab24c4bee9c8c47de..0000000000000000000000000000000000000000 --- a/Mesh/Matrix.h +++ /dev/null @@ -1,249 +0,0 @@ -#ifndef _GMSH_MATRIX_ -#define _GMSH_MATRIX_ - -// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA. -// -// Please report all bugs and problems to <gmsh@geuz.org>. - -#include <math.h> - -#define _TAILLE_ 3 - -class Vector3 -{ - double mat[_TAILLE_]; - double zero; - public: - Vector3 (const double init = 0) - { - zero = init; - for(int i=0;i<_TAILLE_;i++) - mat[i] = zero; - } - Vector3 (const double& init, double z[3]) - { - zero = init; - for(int i=0;i<_TAILLE_;i++) - mat[i] = z[i]; - } - Vector3 (const double& init, double x, double y, double z) - { - zero = init; - mat[0] = x; - mat[1] = y; - mat[2] = z; - } - Vector3& operator = (const Vector3 &autre) - { - for(int i=0;i<_TAILLE_;i++) - mat[i] = autre.mat[i]; - return *this; - } - - Vector3 operator * (double autre) - { - for(int i=0;i<_TAILLE_;i++) - mat[i] *= autre; - return *this; - } - Vector3 operator + (const Vector3 &autre) - { - Vector3 m(0.); - for(int i=0;i<_TAILLE_;i++) - m.mat[i] = mat[i] + autre.mat[i]; - return m; - } - Vector3 operator - (const Vector3 &autre) - { - Vector3 m(0.); - for(int i=0;i<_TAILLE_;i++) - m.mat[i] = mat[i] - autre.mat[i]; - return m; - } - - double & operator [] (int i) - { - return mat[i]; - } - - double length () - { - return sqrt(mat[0]*mat[0]+mat[1]*mat[1]+mat[2]*mat[2]); - } - - double operator * (const Vector3 &autre) - { - - double m = zero; - for(int i=0;i<_TAILLE_;i++) - m += mat[i] * autre.mat[i]; - return m; - } -}; - -class Matrix3x3 -{ - double mat[_TAILLE_][_TAILLE_]; - Vector3 eVec[_TAILLE_]; - double eVal[_TAILLE_]; - double zero; - public: - void print() - { - /* - cout << "| " << mat[0][0] << " " << mat[0][1] << " " << mat[0][2] << "|"<<endl; - cout << "| " << mat[1][0] << " " << mat[1][1] << " " << mat[1][2] << "|"<<endl; - cout << "| " << mat[2][0] << " " << mat[2][1] << " " << mat[2][2] << "|"<<endl; - */ - } - Matrix3x3 (Vector3 &v1, Vector3 &v2, Vector3 &v3) - { - setColumn(0,v1); - setColumn(1,v2); - setColumn(2,v3); - } - void getEigen(int i,Vector3 &v, double &l) - { - l = eVal[i]; - v = eVec[i]; - } - void setEigen(int i, double v1, double v2, double v3, double l) - { - (eVec[i])[0] = v1; - (eVec[i])[1] = v2; - (eVec[i])[2] = v3; - eVal[i] = l; - } - void setMetric (); - - Matrix3x3 (double init = 0.0) - { - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = zero; - } - Matrix3x3 (const double& init, double z[3][3]) - { - Identity(init); - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = z[i][j]; - } - Matrix3x3 operator + (const Matrix3x3 &autre) - { - Matrix3x3 m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] + autre.mat[i][j]; - return m; - } - Matrix3x3 operator - (const Matrix3x3 &autre) - { - Matrix3x3 m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] - autre.mat[i][j]; - return m; - } - double* operator [] (int i) - { - return mat[i]; - } - void Identity(double id) - { - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - { - if(i == j)mat[i][j] = id; - else mat[i][j] = 0.0; - } - setEigen(0,1,0,0,1); - setEigen(1,0,1,0,1); - setEigen(2,0,0,1,1); - } - - void copy(double m[3][3]) - { - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m[i][j] = mat[i][j]; - } - - Vector3 getColumn (int i) - { - return Vector3 (0.0,mat[0][i],mat[1][i],mat[2][i]); - } - - void setColumn (int i, Vector3 &col) - { - mat[0][i] = col[0]; - mat[1][i] = col[1]; - mat[2][i] = col[2]; - } - - double get(int i, int j) const - { - return mat[i][j]; - } - void set(int i, int j, double k) - { - mat[i][j] = k; - } - - Matrix3x3 operator * (const Matrix3x3 &autre); - /* - bool invert () - { - double det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; - if(det == zero)return false; - mat[0][0] = mat[1][1] / det; - mat[1][1] = mat[0][0] / det; - mat[1][0] = -mat[1][0] / det; - mat[0][1] = -mat[0][1] / det; - } - */ - - double quadraticFormEval (Vector3 & v) - { - return v[0] * v[0] * mat[0][0] + - v[1] * v[1] * mat[1][1] + - v[2] * v[2] * mat[2][2] + - 2. * v[0] * v[1] * mat[0][1] + - 2. * v[0] * v[2] * mat[0][2] + - 2. * v[1] * v[2] * mat[1][2]; - } - - void transpose() - { - double temp; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<i;j++) - { - if(i!=j) - { - temp = mat[i][j]; - mat[i][j] = mat[j][i]; - mat[j][i] = temp; - } - } - } -}; - -#endif