Chromium Code Reviews| Index: src/core/SkGeometry.cpp |
| diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp |
| index a12f961948c77b6695ce2e250fa66d94e3eef96c..e6049f9f7bd993804d1fc7e8948b936cb02fad6f 100644 |
| --- a/src/core/SkGeometry.cpp |
| +++ b/src/core/SkGeometry.cpp |
| @@ -382,20 +382,8 @@ int SkChopQuadAtXExtrema(const SkPoint src[3], SkPoint dst[5]) |
| return 0; |
| } |
| -// F(t) = a (1 - t) ^ 2 + 2 b t (1 - t) + c t ^ 2 |
| -// F'(t) = 2 (b - a) + 2 (a - 2b + c) t |
| -// F''(t) = 2 (a - 2b + c) |
| -// |
| -// A = 2 (b - a) |
| -// B = 2 (a - 2b + c) |
| -// |
| -// Maximum curvature for a quadratic means solving |
| -// Fx' Fx'' + Fy' Fy'' = 0 |
| -// |
| -// t = - (Ax Bx + Ay By) / (Bx ^ 2 + By ^ 2) |
| -// |
| -int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) |
| -{ |
| +float SkGetTQuadAtMaxCurvature(const SkPoint src[3]) { |
| + |
| SkScalar Ax = src[1].fX - src[0].fX; |
| SkScalar Ay = src[1].fY - src[0].fY; |
| SkScalar Bx = src[0].fX - src[1].fX - src[1].fX + src[2].fX; |
| @@ -427,7 +415,24 @@ int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) |
| } |
| } |
| #endif |
| + return t; |
| +} |
| +// F(t) = a (1 - t) ^ 2 + 2 b t (1 - t) + c t ^ 2 |
|
bsalomon
2013/07/10 15:14:36
Maybe these comments belong with the new function
|
| +// F'(t) = 2 (b - a) + 2 (a - 2b + c) t |
| +// F''(t) = 2 (a - 2b + c) |
| +// |
| +// A = 2 (b - a) |
| +// B = 2 (a - 2b + c) |
| +// |
| +// Maximum curvature for a quadratic means solving |
| +// Fx' Fx'' + Fy' Fy'' = 0 |
| +// |
| +// t = - (Ax Bx + Ay By) / (Bx ^ 2 + By ^ 2) |
| +// |
| +int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) |
| +{ |
| + SkScalar t = SkGetTQuadAtMaxCurvature(src); |
| if (t == 0) |
| { |
| memcpy(dst, src, 3 * sizeof(SkPoint)); |