diff options
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp')
-rw-r--r-- | Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp index 8541410a56f..75d571877a9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp @@ -2,7 +2,7 @@ ** Matrix.cpp ** ** ** ** This file is part of dvisvgm -- a fast DVI to SVG converter ** -** Copyright (C) 2005-2019 Martin Gieseking <martin.gieseking@uos.de> ** +** Copyright (C) 2005-2020 Martin Gieseking <martin.gieseking@uos.de> ** ** ** ** This program is free software; you can redistribute it and/or ** ** modify it under the terms of the GNU General Public License as ** @@ -169,7 +169,7 @@ Matrix& Matrix::rotate (double deg) { Matrix& Matrix::xskewByAngle (double deg) { - if (fmod(fabs(deg)-90, 180) != 0) + if (fmod(abs(deg)-90, 180) != 0) return xskewByRatio(tan(deg2rad(deg))); return *this; } @@ -186,7 +186,7 @@ Matrix& Matrix::xskewByRatio (double xyratio) { Matrix& Matrix::yskewByAngle (double deg) { - if (fmod(fabs(deg)-90, 180) != 0) + if (fmod(abs(deg)-90, 180) != 0) return yskewByRatio(tan(deg2rad(deg))); return *this; } @@ -246,17 +246,17 @@ Matrix& Matrix::lmultiply (const Matrix &tm) { Matrix& Matrix::invert () { Matrix ret; - if (double denom = det(*this)) { - for (int i=0; i < 3; ++i) { - for (int j=0; j < 3; ++j) { - ret._values[i][j] = det(*this, i, j)/denom; - if ((i+j)%2 != 0) - ret._values[i][j] *= -1; - } + double denom = det(*this); + if (abs(denom) < 1e-12) + throw exception(); + for (int i=0; i < 3; ++i) { + for (int j=0; j < 3; ++j) { + ret._values[j][i] = det(*this, i, j)/denom; + if ((i+j)%2 != 0) + ret._values[j][i] *= -1; } - return *this = ret; } - throw exception(); + return *this = ret; } |