X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMemArray.cxx;h=db968d6ad8a412ceda5882b3c70dc2101129b0a9;hb=e7a9d4f59978fd384ee98db1dfdd5ec2118331ca;hp=3d6cc18f90e1bb68723d4362084c2b4c740add3c;hpb=e4063d87dbb8dad309dc1880af096d521934cf24;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMemArray.cxx b/src/MEDCoupling/MEDCouplingMemArray.cxx index 3d6cc18f9..db968d6ad 100755 --- a/src/MEDCoupling/MEDCouplingMemArray.cxx +++ b/src/MEDCoupling/MEDCouplingMemArray.cxx @@ -119,7 +119,7 @@ void DataArrayDouble::FindTupleIdsNearTuplesAlg(const BBTreePts void DataArrayDouble::FindClosestTupleIdAlg(const BBTreePts& myTree, double dist, const double *pos, mcIdType nbOfTuples, const double *thisPt, mcIdType thisNbOfTuples, mcIdType *res) { - double distOpt(dist); + double distOpt = std::max(dist, std::numeric_limits::epsilon()); const double *p(pos); mcIdType *r(res); for(mcIdType i=0;igetPointer()); const double *coo(coords->begin()),*vectField(begin()); - std::transform(vect,vect+3,Uz,std::bind2nd(std::multiplies(),1./magOfVect)); + std::transform(vect,vect+3,Uz,std::bind(std::multiplies(),std::placeholders::_1,1./magOfVect)); for(mcIdType i=0;i()); Uteta[0]=Uz[1]*Ur[2]-Uz[2]*Ur[1]; Uteta[1]=Uz[2]*Ur[0]-Uz[0]*Ur[2]; Uteta[2]=Uz[0]*Ur[1]-Uz[1]*Ur[0]; double magOfTeta(sqrt(Uteta[0]*Uteta[0]+Uteta[1]*Uteta[1]+Uteta[2]*Uteta[2])); - std::transform(Uteta,Uteta+3,Uteta,std::bind2nd(std::multiplies(),1./magOfTeta)); + std::transform(Uteta,Uteta+3,Uteta,std::bind(std::multiplies(),std::placeholders::_1,1./magOfTeta)); Ur[0]=Uteta[1]*Uz[2]-Uteta[2]*Uz[1]; Ur[1]=Uteta[2]*Uz[0]-Uteta[0]*Uz[2]; Ur[2]=Uteta[0]*Uz[1]-Uteta[1]*Uz[0]; retPtr[0]=Ur[0]*vectField[0]+Ur[1]*vectField[1]+Ur[2]*vectField[2]; retPtr[1]=Uteta[0]*vectField[0]+Uteta[1]*vectField[1]+Uteta[2]*vectField[2]; @@ -2093,7 +2093,13 @@ DataArrayDouble *DataArrayDouble::determinant() const /*! * Computes 3 eigenvalues of every upper triangular matrix defined by the tuple of - * \a this array, which contains 6 components. + * \a this array, which contains 6 components. The 6 components of tuples are expected to be stored as follow :
+ * \a tuple[0] = \c matrix_XX
+ * \a tuple[1] = \c matrix_YY
+ * \a tuple[2] = \c matrix_ZZ
+ * \a tuple[3] = \c matrix_XY
+ * \a tuple[4] = \c matrix_YZ
+ * \a tuple[5] = \c matrix_XZ
* \return DataArrayDouble * - the new instance of DataArrayDouble containing 3 * components, whose each tuple contains the eigenvalues of the matrix of * corresponding tuple of \a this array. @@ -2119,7 +2125,13 @@ DataArrayDouble *DataArrayDouble::eigenValues() const /*! * Computes 3 eigenvectors of every upper triangular matrix defined by the tuple of - * \a this array, which contains 6 components. + * \a this array, which contains 6 components. The 6 components of tuples are expected to be stored as follow :
+ * \a tuple[0] = \c matrix_XX
+ * \a tuple[1] = \c matrix_YY
+ * \a tuple[2] = \c matrix_ZZ
+ * \a tuple[3] = \c matrix_XY
+ * \a tuple[4] = \c matrix_YZ
+ * \a tuple[5] = \c matrix_XZ
* \return DataArrayDouble * - the new instance of DataArrayDouble containing 9 * components, whose each tuple contains 3 eigenvectors of the matrix of * corresponding tuple of \a this array. @@ -3465,18 +3477,18 @@ void DataArrayDouble::Rotate3DAlg(const double *center, const double *vect, doub double norm(sqrt(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2])); if(norm::min()) throw INTERP_KERNEL::Exception("DataArrayDouble::Rotate3DAlg : magnitude of input vector is too close of 0. !"); - std::transform(vect,vect+3,vectorNorm,std::bind2nd(std::multiplies(),1/norm)); + std::transform(vect,vect+3,vectorNorm,std::bind(std::multiplies(),std::placeholders::_1,1/norm)); //rotation matrix computation matrix[0]=cosa; matrix[1]=0.; matrix[2]=0.; matrix[3]=0.; matrix[4]=cosa; matrix[5]=0.; matrix[6]=0.; matrix[7]=0.; matrix[8]=cosa; matrixTmp[0]=vectorNorm[0]*vectorNorm[0]; matrixTmp[1]=vectorNorm[0]*vectorNorm[1]; matrixTmp[2]=vectorNorm[0]*vectorNorm[2]; matrixTmp[3]=vectorNorm[1]*vectorNorm[0]; matrixTmp[4]=vectorNorm[1]*vectorNorm[1]; matrixTmp[5]=vectorNorm[1]*vectorNorm[2]; matrixTmp[6]=vectorNorm[2]*vectorNorm[0]; matrixTmp[7]=vectorNorm[2]*vectorNorm[1]; matrixTmp[8]=vectorNorm[2]*vectorNorm[2]; - std::transform(matrixTmp,matrixTmp+9,matrixTmp,std::bind2nd(std::multiplies(),1-cosa)); + std::transform(matrixTmp,matrixTmp+9,matrixTmp,std::bind(std::multiplies(),std::placeholders::_1,1-cosa)); std::transform(matrix,matrix+9,matrixTmp,matrix,std::plus()); matrixTmp[0]=0.; matrixTmp[1]=-vectorNorm[2]; matrixTmp[2]=vectorNorm[1]; matrixTmp[3]=vectorNorm[2]; matrixTmp[4]=0.; matrixTmp[5]=-vectorNorm[0]; matrixTmp[6]=-vectorNorm[1]; matrixTmp[7]=vectorNorm[0]; matrixTmp[8]=0.; - std::transform(matrixTmp,matrixTmp+9,matrixTmp,std::bind2nd(std::multiplies(),sina)); + std::transform(matrixTmp,matrixTmp+9,matrixTmp,std::bind(std::multiplies(),std::placeholders::_1,sina)); std::transform(matrix,matrix+9,matrixTmp,matrix,std::plus()); //rotation matrix computed. double tmp[3];