X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHEXABLOCK%2Fhexa_utils.cxx;h=058e8a9d590b31145de9dd8418a452953b61c667;hb=f3d5693095483a5028dc812cee8697096159690b;hp=6b5e337ee73276004b40eacce7067447769142aa;hpb=6b02c4b9784848b0a660e0e54f88447af8433c50;p=modules%2Fhexablock.git diff --git a/src/HEXABLOCK/hexa_utils.cxx b/src/HEXABLOCK/hexa_utils.cxx index 6b5e337..058e8a9 100755 --- a/src/HEXABLOCK/hexa_utils.cxx +++ b/src/HEXABLOCK/hexa_utils.cxx @@ -1,12 +1,12 @@ // C++ : Fonctions utilitaires de Hexa -// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// Copyright (C) 2009-2014 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -104,6 +104,13 @@ double calc_distance (double v1[], double v2[]) Real3 vv = { v2[dir_x]-v1[dir_x], v2[dir_y]-v1[dir_y], v2[dir_z]-v1[dir_z] }; return calc_norme (vv); } +// ======================================================== calc_d2 +double calc_d2 (double v1[], double v2[]) +{ + double dd = carre (v2[dir_x]-v1[dir_x]) + carre (v2[dir_y]-v1[dir_y]) + + carre (v2[dir_z]-v1[dir_z]); + return dd; +} // ========================================================= calc_vecteur void calc_vecteur (double pta[], double ptb[], double vab[]) { @@ -111,6 +118,13 @@ void calc_vecteur (double pta[], double ptb[], double vab[]) vab [dir_y] = ptb [dir_y] - pta [dir_y]; vab [dir_z] = ptb [dir_z] - pta [dir_z]; } +// ========================================================= copy_vecteur +void copy_vecteur (double va[], double vb[]) +{ + vb [dir_x] = va [dir_x]; + vb [dir_y] = va [dir_y]; + vb [dir_z] = va [dir_z]; +} // ========================================================= calc_milieu void calc_milieu (double pta[], double ptb[], double milieu[]) { @@ -147,7 +161,6 @@ double carre (double val) // ====================================================== same_coords bool same_coords (double* pa, double* pb, double epsilon2) { - double d2 = carre (pb[dir_x]-pa[dir_x]) + carre (pb[dir_y]-pa[dir_y]) + carre (pb[dir_z]-pa[dir_z]); return d2 < epsilon2; @@ -251,4 +264,52 @@ cpchar get_time (string& buffer) buffer = quand; return buffer.c_str(); } +// ======================================================== requals +bool requals (const double v1, const double v2) +{ + static const double Epsilon = 1e-6; + return v1 >= v2 - Epsilon && v1 <= v2 + Epsilon; +} +// ======================================================== requals +bool requals (const double* lun, const double* lautre) +{ + return lun!=NULL && lautre!=NULL && requals (lun [0], lautre [0]) + && requals (lun [1], lautre [1]) && requals (lun [2], lautre [2]) ; +} +// ======================================================== make_basename +int make_basename (cpchar filename, string& base) +{ + const char slash = '/'; + const char antis = '\\'; + int lg = strlen (filename); + int ifin = -1; + int ideb = 0; + bool more = true; + + for (int nc = lg-1 ; more && nc>=0 ; --nc) + { + char car = filename[nc]; + if (car==slash || car==antis) + { + if (ifin >0) + { + ideb = nc + 1; + more = false; + } + } + else if (ifin<0) + ifin = nc; + } + + if (ifin <0) + { + base = "undefined"; + return HERR; + } + + base = ""; + for (int nc=ideb ; nc <= ifin ; ++nc) + base += filename[nc]; + return HOK; +} END_NAMESPACE_HEXA