{
const svg = DOM.svg(width, height);
const c = d3.select(svg);
const transform = d3.transform()
.translate(([ix, iy, x, y]) => [x, y])
.rotate(([ix, iy]) => (ix + iy) % 2 === 0 ? 0 : 90);
c.selectAll('path').data(petalData).enter()
.append('g')
.attr('transform', transform)
.attr('fill', (([ix, iy]) => d3.interpolateSinebow(Math.sqrt(ix**2 + iy**2) / 80)))
.append('path').attr('d', draw);
let iterations = 0;
d3.interval(elapsed => {
iterations++;
transform.rotate(90);
c.selectAll('g')
.transition()
.delay(([ix, iy]) => Math.sqrt(ix**2 + iy**2) * 100)
.duration(1000)
.attr('transform', transform)
.attr('fill', ([ix, iy]) =>
d3.interpolateSinebow((iterations * 20 + Math.sqrt(ix**2 + iy**2)) / 80))
}, 4000);
return svg;
}