Esse código possui três funções para criar uma "flor" com círculos; a primeira cria um flor em forma de cruz na posição X e Y passadas, no caso X e Y do mouse, no entanto o tamanho dos círculos não varia.
Na função flor2, é criada uma flor em forma de cruz, na posição passada, e o tamanho dos círculos variam de acordo com o valor passado para a função, no caso a posição x do mouse dividido por 8.
Na função flor3, é criada uma flor em formato de X na posição passado, sendo essa a unica diferença entre esta e a função flor 2.
O circulo central da flor, tem seu centro (nesse exemplo) na posição X e Y do mouse, e as outras são feitas em relação a ela, na primeira função como o raio é 20, a posição x do circulo esquerdo é o x do circulo central menos o raio da bola central e o raio do circulo esquerdo, tendo assim seu centro, essa lógica é alterada e assim é feito os outros três círculos, e como os quatro círculos são feitos em relação ao raio e posição do raio central, é possível mudar posição e raio do circulo central sem "quebrar" a figura, por isso a modificação para a função flor2 é bem rapida
Código:
int x;
void setup(){
size(1080,986);
}
void draw(){
if(mousePressed){
flor3(mouseX,mouseY,mouseX/8);
}
}
void circulo(float xc,float yc,float r){
ellipse(xc,yc,2*r,2*r);
}
void flor(float xf, float yf){
circulo(xf,yf,20);
circulo(xf,yf-40,20);
circulo(xf,yf+40,20);
circulo(xf-40,yf,20);
circulo(xf+40,yf,20);
}
void flor2(float xf, float yf,float r){
circulo(xf,yf,r);
circulo(xf,yf-r*2,r);
circulo(xf,yf+r*2,r);
circulo(xf-r*2,yf,r);
circulo(xf+r*2,yf,r);
}
void flor3(float xf, float yf,float r){
circulo(xf,yf,r);
circulo(xf-r*sqrt(2),yf-r*sqrt(2),r);
circulo(xf+r*sqrt(2),yf+r*sqrt(2),r);
circulo(xf+r*sqrt(2),yf-r*sqrt(2),r);
circulo(xf-r*sqrt(2),yf+r*sqrt(2),r);
}
Nenhum comentário:
Postar um comentário