Brandon DeRosier 70c3469143 [Impeller] Round out extreme angles between curve polyline segments. (flutter/engine#53210)
Resolves https://github.com/flutter/flutter/issues/137956.

Detect when the angle between two curve segments is > 10 degrees and
insert smoothing geometry if so. See [this
comment](https://github.com/flutter/flutter/issues/137956#issuecomment-2148395911)
for the full rationale behind this change.

```dart
    Paint paint = Paint()
      ..color = Colors.white
      ..strokeWidth = 50
      ..strokeCap = StrokeCap.round
      ..strokeJoin = StrokeJoin.round
      ..style = PaintingStyle.stroke;

    Path path = Path();
    path.moveTo(0, 0);
    path.quadraticBezierTo(100, 100, 0, 0);
    canvas.drawPath(path, paint);
```

Before:
<img width="166" alt="image"
src="https://github.com/flutter/engine/assets/919017/bbca80fb-a928-42aa-9e85-ad8e345558de">

After:
<img width="145" alt="image"
src="https://github.com/flutter/engine/assets/919017/aab6ffc8-d03e-4c2f-af83-c125d7acc250">
2024-06-06 15:00:12 -07:00
Languages
Dart 75%
C++ 16.5%
Objective-C++ 2.9%
Java 2.8%
Objective-C 0.7%
Other 1.9%