Primeiramente permaneci com a função círculo que foi utilizada em problemas anteriores, que já geral uma ellipse entrando com três parâmetros. Você entra com o raio e ele já põe dos valores dos diâmetros de acordo com seu raio.
void circulo (int x, int y, int r)
{
ellipse(x,y,r*2, r*2);
}
Então criei a função pedida flor3(x,y,r) usando a círculo dentro dela trabalhando já apenas com os três parâmetros que será dado de entrada na função flor3. A primeira posição de círculo é nos locais x e y, e as outras se repetem com o mesmo valor adicionados e/ou subtraídos de r+r/2, assim deixando o círculo da diagonal bem próximo o cículo central a qual deixa a flor exatamente como na imagem acima de referência.
void flor3 (int x, int y, int r)
{
circulo(x,y,r);
circulo(x+r+r/2,y+r+r/2,r);
circulo(x-r-r/2,y+r+r/2,r);
circulo(x+r+r/2,y-r-r/2,r);
circulo(x-r-r/2,y-r-r/2,r);
}
Como é pedido para ser chamado apenas 100 vezes não podemos colocar na draw, é necessário a criação de um for dentro do setup para controlar que chame apenas cem vezes. Começa em 0 e enquanto x for menor que 100 uma nova flor é chamada, e logo após x incrementado em +1. Quando x for igual a 100 o loop para.
void setup ()
{
size (800, 600);
for (int x=0; x<100; x++)
{
fill ((int)random(255),(int)random(255),(int)random(255));
flor3((int)random(width),(int)random(height),(int)random(30));
}
}
Para gerar randomicamente todos os parâmetros foram declarados random com limite de acordo com altura e largura da tela, e o raio você coloca até que tamanho queira que ele varie, no exemplo coloquei 30. Para também alterar as cores em cada flor gerada e facilitar a visualização, o fill foi chamado no padrão RGB com três parâmetros randômicos.

