xxxxxxxxxx
60
// 実装参考:
// https://editor.p5js.org/makio135/sketches/AUy_cG-d4
// https://qiita.com/QUANON/items/672588719b178291f351
// http://blog.livedoor.jp/reona396/archives/54891368.html
const R = 10;
function setup() {
createCanvas(800,800);
}
function draw() {
background(0);
noFill();
stroke(255);
strokeWeight(3);
//heartDraw(width/2, height/2);
water();
}
const heartDraw = (tx,ty) => {
let n = 200;
push();
translate(tx, ty);
beginShape();
for (let i = 0; i < n; i++) {
let x = xHeart(TAU * i / n,R);
let y = yHeart(TAU * i / n,R);
vertex(x, y);
}
endShape();
pop();
}
const xHeart = (angle, radius) => {
const x = radius / 15.0 * 16 * Math.pow(Math.sin(angle), 3);
return x;
}
const yHeart = (p, radius) => {
const y = radius / 15.0 * (-13 * Math.cos(p) + 5 * Math.cos(2 * p) + 2 * Math.cos(3 * p) + Math.cos(4 * p));
return y;
}
const water = () => {
const A = 1;
const R = 150;
push();
translate(width/2, height/2);
rotate(radians(-90));
beginShape();
for (let t = 0; t < TWO_PI; t += 0.2) {
r = 1 / (A * sin(t/2)+1);
//vertex( R * r * cos(t), R * r * sin(t));
//circle(R * r * cos(t), R * r * sin(t),10);
heartDraw(R * r * cos(t), R * r * sin(t));
}
endShape(CLOSE);
pop();
}