{
const [
[numCircle, rad, degOff],
[r, dist],
[showInner, showInverted, showLine, clip]
] = values;
const context = DOM.context2d(width, width);
context.translate(width / 2, width / 2);
context.arc(0, 0, r, 0, Math.PI * 2);
if (clip) {
context.clip();
}
circle(o, context);
circle([o[0], o[1], r], context, { fill: false });
context.fillText("O", o[0] + 5, o[1] - 5);
const innerCircles = [];
for (let i = 0; i < numCircle; ++i) {
const deg = i * degOff;
const cp = coordsFromDeg(deg, dist, o);
const c = [...cp, rad, deg];
if (showInner) {
circle(c, context, { fill: false, color: "red" });
}
innerCircles.push(c);
}
innerCircles.forEach((c, i) => {
const circleP_ = invertCircle(c, r, context, showLine);
if (showInverted) {
circle(circleP_, context, { fill: false, color: "blue" });
}
});
yield context.canvas;
}