computeEllipseAllPoints function
Implementation
List<PointD> computeEllipseAllPoints({
double? increment,
double? cx,
double? cy,
double? rx,
double? ry,
double? offset,
double? overlap,
DrawConfig? config,
}) {
final List<PointD> allPoints = [];
final double radOffset = config!.offsetSymmetric(0.5) - pi / 2;
allPoints.add(PointD(
config.offsetSymmetric(offset!) +
cx! +
0.9 * rx! * cos(radOffset - increment!),
config.offsetSymmetric(offset) +
cy! +
0.9 * ry! * sin(radOffset - increment),
));
for (double angle = radOffset;
angle < (pi * 2 + radOffset - 0.01);
angle = angle + increment) {
allPoints.add(PointD(
config.offsetSymmetric(offset) + cx + rx * cos(angle),
config.offsetSymmetric(offset) + cy + ry * sin(angle),
));
}
allPoints
..add(PointD(
config.offsetSymmetric(offset) +
cx +
rx * cos(radOffset + pi * 2 + overlap! * 0.5),
config.offsetSymmetric(offset) +
cy +
ry * sin(radOffset + pi * 2 + overlap * 0.5),
))
..add(PointD(
config.offsetSymmetric(offset) +
cx +
0.98 * rx * cos(radOffset + overlap),
config.offsetSymmetric(offset) +
cy +
0.98 * ry * sin(radOffset + overlap),
))
..add(PointD(
config.offsetSymmetric(offset) +
cx +
0.9 * rx * cos(radOffset + overlap * 0.5),
config.offsetSymmetric(offset) +
cy +
0.9 * ry * sin(radOffset + overlap * 0.5),
));
return allPoints;
}