diff --git a/Geo/MTriangle.cpp b/Geo/MTriangle.cpp index e7530ab2cd35a056df98377bdf5ae722f4bb899e..a15d74f8ef7611f7f4b96ca7b9193aabe09ccc66 100644 --- a/Geo/MTriangle.cpp +++ b/Geo/MTriangle.cpp @@ -99,14 +99,22 @@ double MTriangle::gammaShapeMeasure() const double d2[3] = {_v[2]->x() - O[0], _v[2]->y() - O[1], _v[2]->z() - O[2]}; const double Jxy = d1[0] * d2[1] - d1[1] * d2[0]; const double Jxz = d1[0] * d2[2] - d1[2] * d2[0]; - if (fabs(Jxy) > fabs(Jxz)) { + const double Jyz = d1[1] * d2[2] - d1[2] * d2[1]; + if ((fabs(Jxy) > fabs(Jxz)) && (fabs(Jxy) > fabs(Jyz))) + { uvw[0] = (d[0] * d2[1] - d[1] * d2[0]) / Jxy; uvw[1] = (d[1] * d1[0] - d[0] * d1[1]) / Jxy; } - else { + else if (fabs(Jxz) > fabs(Jyz)) + { uvw[0] = (d[0] * d2[2] - d[2] * d2[0]) / Jxz; uvw[1] = (d[2] * d1[0] - d[0] * d1[2]) / Jxz; } + else + { + uvw[0] = (d[1] * d2[2] - d[2] * d2[1]) / Jyz; + uvw[1] = (d[2] * d1[1] - d[1] * d1[2]) / Jyz; + } uvw[2] = 0.; }