diff options
author | Chris Dalton <csmartdalton@google.com> | 2017-04-13 14:26:00 -0600 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-14 15:14:11 +0000 |
commit | 4343654bc4a93812cba168a665deef0de2ebcfdd (patch) | |
tree | bee82de71d4671febf21ba1c13c2f312cbd2f8de /tests/PathOpsCubicIntersectionTest.cpp | |
parent | 028c3d77ea0e49982e92c6c9614cf59d687f4370 (diff) |
Improve accuracy of cubic classification
- Updates the logic to reflect the Loop-Blinn paper instead of the GPU
gems website.
- Removes the threshold for detecting local cusps. The serpentine
codepath works for these cusps anyway, so what we really want to know
is whether the discriminant is negative.
- Makes sure to not scale the inflection function by 1/0.
- Shifts the inflection function coefficients in d[] so they match the
paper.
- Stores the cubic discriminant in d[0].
Bug: skia:
Change-Id: I909a522a0fd27c9c8dfbc27d968bc43eeb7a416f
Reviewed-on: https://skia-review.googlesource.com/13304
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Diffstat (limited to 'tests/PathOpsCubicIntersectionTest.cpp')
-rw-r--r-- | tests/PathOpsCubicIntersectionTest.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tests/PathOpsCubicIntersectionTest.cpp b/tests/PathOpsCubicIntersectionTest.cpp index 638ecb008c..66becf304a 100644 --- a/tests/PathOpsCubicIntersectionTest.cpp +++ b/tests/PathOpsCubicIntersectionTest.cpp @@ -646,11 +646,11 @@ static void selfOneOff(skiatest::Reporter* reporter, int index) { c[i] = cubic.fPts[i].asSkPoint(); } SkScalar loopT[3]; - SkScalar d[3]; + SkScalar d[4]; SkCubicType cubicType = SkClassifyCubic(c, d); int breaks = SkDCubic::ComplexBreak(c, loopT); SkASSERT(breaks < 2); - if (breaks && cubicType == SkCubicType::kLoop_SkCubicType) { + if (breaks && cubicType == SkCubicType::kLoop) { SkIntersections i; SkPoint twoCubics[7]; SkChopCubicAt(c, twoCubics, loopT[0]); |