You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
908 B
42 lines
908 B
class Heart{
|
|
|
|
constructor(x, y){
|
|
this.pos = createVector(x, y);
|
|
this.pulse = 0;
|
|
this.size = random(50, 200);
|
|
}
|
|
|
|
update(){
|
|
this.pulse += 0.1;
|
|
this.pulseValue = 1 + 0.03 * sin(this.pulse);
|
|
}
|
|
|
|
show(){
|
|
|
|
function heart(x, size){
|
|
return size * sqrt(1 - abs(x) / size);
|
|
}
|
|
|
|
push();
|
|
translate(this.pos.x, this.pos.y);
|
|
scale(this.pulseValue);
|
|
fill(255, 0, 0, 80);
|
|
noStroke();
|
|
|
|
arc(this.size / 4, 0, this.size / 2, this.size / 2, PI, TWO_PI);
|
|
arc(-this.size / 4, 0, this.size / 2, this.size / 2, PI, TWO_PI);
|
|
|
|
beginShape();
|
|
vertex(-this.size / 2, 0);
|
|
|
|
for (let x = -this.size / 2; x < this.size / 2; x++){
|
|
vertex(x, heart(x, this.size / 2));
|
|
}
|
|
|
|
vertex(this.size / 2, 0);
|
|
endShape();
|
|
|
|
pop();
|
|
}
|
|
|
|
} |