xxxxxxxxxx
95
const colors6 = ['#124076','#FBA834'];
const colors1 = ['#B31312','#EA906C'];
const colors2 = ['#bf373e','#f8ffef'];
const colors3 = ['#303241','#87A922'];
const colors4 = ['#0389ae','#d97841'];
const colors5 = ['#106991','#abb8c9'];
const colorBox = [colors6,colors1,colors2,colors3,colors4,colors5];
function setup() {
createCanvas(800,800);
noStroke();
}
function draw() {
const n = 3;
const num = 20;
const rand_rotate = random(10,30);
background(220);
const r = width*1.5/num;
const rand = Math.floor(random(colorBox.length));
for(let i = num; i > 0; i--){
push();
// const rand = Math.floor(random(colorBox.length));
if(i%2 === 0){
fill(colorBox[rand][1]);
}else{
fill(colorBox[rand][0]);
}
obtuseTris(width/2,height/2,(i+1)*r,n, radians(i*rand_rotate));
pop();
}
noLoop();
}
keyPressed = () => {
if (key === 's') {
saveCanvas(canvas, 'canvas', 'png');
//saveGif('canvas', 2);
}
};
// triangle with obtuse angles
/**
* 角が取れた多角形
* @function obtuseTris
* @param {number} wx - 中心点x
* @param {number} hy - 中心点y
* @param {number} r - 多角形の半径
* @param {number} n - 何角形か?
* @param {number} rotateAngle - 回転する角度
*/
function obtuseTris(wx,hy,r,n,rotateAngle){
const angle =360/n;
const points =[];
const points2 =[];
push();
translate(wx,hy);
for(let i=0;i<n;i++){
const x = r*cos(radians(angle*i));
const y = r*sin(radians(angle*i));
//circle(x,y,10);
points.push(createVector(x,y));
}
pop();
for(let i=0;i<n;i++){
if(i === n-1){
const m = abs(sin(radians(frameCount)));
let v2_2= p5.Vector.lerp(points[0],points[i], 0.8);
let v2 = p5.Vector.lerp(points[0],points[i], 0.2);
points2.push(v2_2);
points2.push(v2);
}else{
let v2 = p5.Vector.lerp(points[i], points[i+1], 0.2);
let v2_2= p5.Vector.lerp(points[i], points[i+1], 0.8);
points2.push(v2);
points2.push(v2_2);
}
}
push();
translate(wx,hy);
rotate(rotateAngle);
beginShape();
for(let i =0;i<points2.length;i++){
vertex(points2[i].x,points2[i].y);
}
endShape(CLOSE);
pop();
//console.log(points2)
}