зеркало из https://github.com/mozilla/moz-skia.git
Fix Matrix44Test and double-to-float conversion in SVD code
git-svn-id: http://skia.googlecode.com/svn/trunk@11067 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
Родитель
5b2e2640ed
Коммит
25f72ed034
|
@ -2060,7 +2060,7 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix,
|
||||||
// Now we need to compute eigenvalues of S (our scale factors)
|
// Now we need to compute eigenvalues of S (our scale factors)
|
||||||
// and eigenvectors (bases for our rotation)
|
// and eigenvectors (bases for our rotation)
|
||||||
// From this, should be able to reconstruct S as U*W*U^T
|
// From this, should be able to reconstruct S as U*W*U^T
|
||||||
if (SkScalarNearlyZero(Sb)) {
|
if (SkScalarNearlyZero(SkDoubleToScalar(Sb))) {
|
||||||
// already diagonalized
|
// already diagonalized
|
||||||
cos1 = SK_Scalar1;
|
cos1 = SK_Scalar1;
|
||||||
sin1 = 0;
|
sin1 = 0;
|
||||||
|
@ -2080,7 +2080,7 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix,
|
||||||
w2 = 0.5*(trace + discriminant);
|
w2 = 0.5*(trace + discriminant);
|
||||||
}
|
}
|
||||||
|
|
||||||
cos1 = Sb; sin1 = w1 - Sa;
|
cos1 = SkDoubleToScalar(Sb); sin1 = SkDoubleToScalar(w1 - Sa);
|
||||||
SkScalar reciplen = SK_Scalar1/SkScalarSqrt(cos1*cos1 + sin1*sin1);
|
SkScalar reciplen = SK_Scalar1/SkScalarSqrt(cos1*cos1 + sin1*sin1);
|
||||||
cos1 *= reciplen;
|
cos1 *= reciplen;
|
||||||
sin1 *= reciplen;
|
sin1 *= reciplen;
|
||||||
|
@ -2094,8 +2094,8 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL != scale) {
|
if (NULL != scale) {
|
||||||
scale->fX = w1;
|
scale->fX = SkDoubleToScalar(w1);
|
||||||
scale->fY = w2;
|
scale->fY = SkDoubleToScalar(w2);
|
||||||
}
|
}
|
||||||
if (NULL != rotation1) {
|
if (NULL != rotation1) {
|
||||||
rotation1->fX = cos1;
|
rotation1->fX = cos1;
|
||||||
|
|
|
@ -513,10 +513,10 @@ static void TestMatrix44(skiatest::Reporter* reporter) {
|
||||||
|
|
||||||
// test mixed-valued matrix inverse
|
// test mixed-valued matrix inverse
|
||||||
mat.reset();
|
mat.reset();
|
||||||
mat.setScale(1.0e-11, 3.0, 1.0e+11);
|
mat.setScale(1.0e-10, 3.0, 1.0e+10);
|
||||||
rot.setRotateDegreesAbout(0, 0, -1, 90);
|
rot.setRotateDegreesAbout(0, 0, -1, 90);
|
||||||
mat.postConcat(rot);
|
mat.postConcat(rot);
|
||||||
mat.postTranslate(1.0e+11, 3.0, 1.0e-11);
|
mat.postTranslate(1.0e+10, 3.0, 1.0e-10);
|
||||||
REPORTER_ASSERT(reporter, mat.invert(NULL));
|
REPORTER_ASSERT(reporter, mat.invert(NULL));
|
||||||
mat.invert(&inverse);
|
mat.invert(&inverse);
|
||||||
iden1.setConcat(mat, inverse);
|
iden1.setConcat(mat, inverse);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче