14 constexpr
static Scalar kPrecision = 4;
18 return std::sqrt(nn.x + nn.y);
28 Scalar k = scale_factor * .75f * kPrecision;
29 Point a = (p0 - p1 * 2 + p2).Abs();
30 Point b = (p1 - p2 * 2 + p3).Abs();
31 return std::sqrt(k * length(a.
Max(
b)));
38 Scalar k = scale_factor * .25f * kPrecision;
39 return std::sqrt(k * length(p0 - p1 * 2 + p2));
64 std::sqrt(std::max(p0.
Dot(p0), std::max(p1.
Dot(p1), p2.
Dot(p2))));
67 const Point dp = -2 * w * p1 + p0 + p2;
68 const Scalar dw = std::abs(-2 * w + 2);
73 Scalar k = scale_factor * kPrecision;
74 const Scalar rp_minus_1 = std::max(0.0f, max_len * k - 1);
75 const Scalar numer = std::sqrt(dp.
Dot(dp)) * k + rp_minus_1 * dw;
76 const Scalar denom = 4 * std::min(w, 1.0f);
82 return std::sqrt(numer / denom);
Scalar ComputeConicSubdivisions(Scalar scale_factor, Point p0, Point p1, Point p2, Scalar w)
Scalar ComputeQuadradicSubdivisions(Scalar scale_factor, Point p0, Point p1, Point p2)
Scalar ComputeCubicSubdivisions(Scalar scale_factor, Point p0, Point p1, Point p2, Point p3)
constexpr TPoint Max(const TPoint &p) const
constexpr TPoint Min(const TPoint &p) const
constexpr Type Dot(const TPoint &p) const