Isso não é bem uma dúvida, é mais um compartilhamento de idéia/desafio com os colegas e um lembrete pessoal futuro para melhoramentos. Caso alguém apresente a solução completa ou até melhorada, marco como solucionado. Este programa é baseado no exercício da "flor inofensiva" (LP2.2.5)
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, 600, 400);
function desenhaCirculo(x, y, raio, cor) {
pincel.fillStyle = cor;
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2 * Math.PI);
pincel.fill();
}
function desenhaFlor(x, y, raio) {
desenhaCirculo(x, y+2*raio, raio, 'blue'); //inferior
desenhaCirculo(x, y, raio, 'red'); //central
desenhaCirculo(x, y-2*raio, raio, 'yellow'); //superior
desenhaCirculo(x-2*raio, y, raio, 'orange');//esquerdo
desenhaCirculo(x+2*raio, y, raio, 'black');//direito
}
desenhaFlor(300, 200,10);//flor central
desenhaFlor(300, 140,10);//superior
desenhaFlor(240, 200,10);//esquerda
desenhaFlor(360, 200,10);//direita
desenhaFlor(300, 260,10);//inferior
</script>
Minha idéia de melhoramento é basicamente: expandir a função de "modo que lembra a fractal"(ou seja, expandindo progressivamente nas novas pontas de cada ponta anterior), talvez aplicando recursão. preencher as cores de modo aleatório, fazendo um lista de cores com um "case/breake". Parece que não dá para inserir imagem, então só para ter uma idéia da figura formada é uma "flor" em cada uma das pontas da flor central, meio que formando uma cruz simétrica estilizada.