ChartItemLayoutState.arc constructor
ChartItemLayoutState.arc({})
弧 用path保存 path不便于计算
Implementation
ChartItemLayoutState.arc({
required Offset center, // 中心点
required double innerRadius, // 小圆半径
required double outRadius, // 大圆半径
required double startAngle,
required double sweepAngle,
}) {
originRect = null;
double startRad = startAngle;
double endRad = startAngle + sweepAngle;
double r0 = innerRadius;
double r1 = outRadius;
Offset p0 = Offset(math.cos(startRad) * r0, math.sin(startRad) * r0);
Offset p1 = Offset(math.cos(startRad) * r1, math.sin(startRad) * r1);
Offset q0 = Offset(math.cos(endRad) * r0, math.sin(endRad) * r0);
Offset q1 = Offset(math.cos(endRad) * r1, math.sin(endRad) * r1);
bool large = sweepAngle.abs() > math.pi;
bool clockwise = sweepAngle > 0;
Path localPath = Path()
..moveTo(p0.dx, p0.dy)
..lineTo(p1.dx, p1.dy)
..arcToPoint(q1, radius: Radius.circular(r1), clockwise: clockwise, largeArc: large)
..lineTo(q0.dx, q0.dy)
..arcToPoint(p0, radius: Radius.circular(r0), clockwise: !clockwise, largeArc: large);
path = localPath.shift(center);
}