refs #552 Fixed broken SubdivisionConverter2, and added a test to verify.

This commit is contained in:
Mathew Sutcliffe
2015-12-12 04:34:49 +00:00
parent 5d82ed4233
commit 1f36f07bed
2 changed files with 11 additions and 6 deletions

View File

@@ -146,12 +146,11 @@ namespace BlackMisc
{
using BlackMisc::Math::CMathUtils;
double part1 = CMathUtils::trunc(factor / FactorPolicy::factor());
double remaining = std::fmod(factor, FactorPolicy::factor());
double part2 = CMathUtils::trunc(remaining / SubdivPolicy::subfactor());
remaining = std::fmod(remaining, SubdivPolicy::subfactor());
double part3 = CMathUtils::trunc(remaining / SubdivPolicy::subfactor());
remaining = std::fmod(remaining, SubdivPolicy::subfactor());
return part1 + part2 / SubdivPolicy::fraction() + (part3 + remaining) / (SubdivPolicy::fraction() * SubdivPolicy::fraction());
double remaining = std::fmod(factor / FactorPolicy::factor(), 1.0);
double part2 = CMathUtils::trunc(remaining * SubdivPolicy::subfactor());
remaining = std::fmod(remaining * SubdivPolicy::subfactor(), 1.0);
double part3 = remaining * SubdivPolicy::subfactor();
return part1 + part2 / SubdivPolicy::fraction() + part3 / (SubdivPolicy::fraction() * SubdivPolicy::fraction());
}
};

View File

@@ -105,6 +105,12 @@ namespace BlackMiscTest
QVERIFY2(CMathUtils::epsilonEqual(a3.valueRounded(CAngleUnit::deg()), 35.73), "Expecting 35.73");
QVERIFY2(CMathUtils::epsilonEqual(a4.valueRounded(CAngleUnit::deg()), 35.73), "Expecting 35.73");
QVERIFY2(CMathUtils::epsilonEqual(a5.valueRounded(CAngleUnit::deg(), 4), -60.5042), "Expecting -60.5042");
// issue #552
CAngle a6(48.07063588, CAngleUnit::sexagesimalDeg());
CAngle a7(a6);
a7.switchUnit(CAngleUnit::rad());
QVERIFY2(CMathUtils::epsilonEqual(a6.value(CAngleUnit::sexagesimalDeg()), a7.value(CAngleUnit::sexagesimalDeg())), "Conversion via radians yields same answer");
}
/*