let n=0;
let c;
let s=5
let t=true
function setup(){
cnv = createCanvas(windowWidth, windowHeight);
c=min(width,height);
d = (c-20)/s
stroke(250,250,255);
noLoop();
}
function draw(){
background(random(0,50),random(0,50),random(20,70));
translate(width/2,height/2);
if (t){
for(let i=-s;i<s;i++){
for(let j=-s;j<s;j++){
push()
translate(10+d*i,10+d*j)
fill(random(0,50),random(0,50),random(20,70))
noStroke()
rect(0,0,d,d)
strokeWeight(d/300)
stroke(255,255,250)
patternDraw(floor(random(0,18.9)),d)
pop()
}
}
}else{
for(let i=-s;i<s;i++){
for(let j=-s;j<s;j++){
push()
translate(10+d*i,10+d*j)
fill(random(0,50),random(0,50),random(20,70))
noStroke()
d=int(random(c/s/2,c/s*2))
rotate(random(0,PI))
rect(0,0,d,d)
stroke(255,255,250)
strokeWeight(d/300)
patternDraw(floor(random(0,18.9)),d)
pop()
}
}
}
}
function patternDraw(n,d){
push()
border();
noFill();
if(n===0){
a=5;
b=8;
k=2;
for(let k=1;k<6;k++){
for(let i=0;i<=a;i++){
for(let j=1;j<b;j++){
x1=d/(a*2)+d/a*i +d/(a*2)*cos(PI+PI/b*j)
x2=d/(a*2)+d/a*i +d/(a*2)*cos(PI+PI/b*(j+1)-PI/10)
y1=d/(a)*k +d/(a*2)*sin(PI+PI/b*j)
y2=d/(a)*k +d/(a*2)*sin(PI+PI/b*(j+1)-PI/10)
if (x1>1&& x2<d){
line(x1,y1,x2,y2 )
}
x1=d/a*i +d/(a*2)*cos(PI+PI/b*j+0.01)
x2=d/a*i +d/(a*2)*cos(PI+PI/b*(j+1)-PI/10)
y1=d/(a)*k-d/(a*2)+d/(a*2)*sin(PI+PI/b*j)
y2=d/(a)*k-d/(a*2)+d/(a*2)*sin(PI+PI/b*(j+1)-PI/10)
if (x1>1&& x2<d){
line(x1,y1,x2,y2 )
}
}
}
}
}
if(n===1){
a=int(random(3,10));
b=13;
for(let k=0;k<2*a;k++){
for(let i=0;i<=a;i++){
for(let j=1;j<b;j++){
x1=d/(a*2)+d/a*i +d/(a*2)*cos(TWO_PI/b*j)
x2=d/(a*2)+d/a*i +d/(a*2)*cos(TWO_PI/b*(j+1)-PI/10)
y1=d/(a)*k +d/(a*2)*sin(TWO_PI/b*j)
y2=d/(a)*k +d/(a*2)*sin(TWO_PI/b*(j+1)-PI/10)
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2 )
}
x1=d/a*i +d/(a*2)*cos(TWO_PI/b*j+0.01)
x2=d/a*i +d/(a*2)*cos(TWO_PI/b*(j+1)-PI/10)
y1=d/(a)*k-d/(a*2)+d/(a*2)*sin(TWO_PI/b*j)
y2=d/(a)*k-d/(a*2)+d/(a*2)*sin(TWO_PI/b*(j+1)-PI/10)
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2 )
}
}
}
}
}
if(n===2){
m=random(0.3,1.8);
a=55
for(let j=-30;j<30;j++)
for(let i=0;i<a;i++){
x1=d/a*i
y1=m*x1-j*30
x2=d/a*(i+1)-random(2,3)
y2=m*x2-j*30
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2)
}
x1=d/a*i
y1=-m*x1+j*30
x2=d/a*(i+1)-random(2,3)
y2=-m*x2+j*30
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2)
}
}
}
if(n===3){
a=int(random(5,12))
b=int(random(20,50))
for(let i=0;i<a;i++){
for(let j=0;j<b;j++){
x1=i*d/a;
y1=j*d/b;
y2=(j+1)*d/b-random(2,4);
line(x1,y1,x1,y2);
x1=i*d/a;
y1=j*d/b;
y2=(j+1)*d/b-random(2,4);
line(y1,x1,y2,x1);
}
}
}
if(n===4){
m=int(random(4,10));
a=int(random(30,50));
b=int(random(10,20));
for(let j=1;j<b;j++)
for(let i=0;i<a;i++){
x1=d/a*i
y1=d/b*j+m*sin(i)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*sin(i+0.2)
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2)
}
}
}
if(n===5){
m=int(random(4,6));
a=int(random(20,30));
b=int(random(10,20));
for(let j=1;j<b;j++)
for(let i=0;i<a;i++){
if(j%2===0){
x1=d/a*i
y1=d/b*j+m*cos(i)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*cos(i)
}else{
x1=d/a*i
y1=d/b*j+m*sin(i)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*sin(i)
}
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2)
}
}
}
if(n===6){
m=int(random(10,20));
a=int(random(20,30));
b=int(random(20,20));
for(let k=-25;k<27;k+=5){
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.4){
x1=d/a*(i+k)+m*sin(i)
y1=d/a*i+m*cos(i)
x2=d/a*(i+k)+m*sin(i+0.1)
y2=d/a*i+m*cos(i+0.1)
if (x1>2&& x2<(d-2)&&y1>2&&y2<(d-2)){
line(x1,y1,x2,y2)
}
}
}
}
if(n===7){
a=int(random(4,10))
b=int(random(2,9))
for(let k=0;k<b;k++){
for(let i=1;i<a;i++){
for(let j=0;j<TWO_PI;j+=3/(a+int(random(2,3)))){
x1=(d/2)+d/(4*a)*i*sin(j);
y1=d/2+d/(4*a)*i*cos(j);
x2=d/2+d/(4*a)*i*sin(j+0.2);
y2=d/2+d/(4*a)*i*cos(j+0.2);
line(x1+d/4*sin(TWO_PI/b*k),y1+d/4*cos(TWO_PI/b*k),x2+d/4*sin(TWO_PI/b*k),y2+d/4*cos(TWO_PI/b*k))
}
}
}
}
if(n===8){
m=int(random(10,15));
a=int(random(30,30));
b=int(random(10,10));
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.5){
if(j%2===0){
x1=d/a*i
y1=d/b*j+m*cos(i-0.05)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*cos(i+0.2)
}else{
x1=d/a*i
y1=d/b*j-m*cos(i-0.05)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j-m*cos(i+0.2)
}
if (x1>1&& x2<d&&y1>0&&y2<d){
line(x1,y1,x2,y2)
}
}
}
if(n===9){
a=int(random(10,10))
b=(d)/(a*3)
for(let i=0;i<a;i+=1){
for(let j=0;j<a*3;j+=2){
x1=b*j
y1=b*sqrt(j+i)+i*b;
x2=b*j+random(3,5);
if (x1>2&& x2<(d-2)&&y1>2&&y1<(d-2)){
line(x1,y1,x2,y1)
}
x1=b*j
y1=d-b*sqrt(j+i)-i*b;
x2=b*j+random(3,5);
if (x1>2&& x2<(d-2)&&y1>2&&y1<(d-2)){
line(x1,y1,x2,y1)
}
x1=d-b*j
y1=b*sqrt(j+i)+i*b;
x2=d-b*j+random(3,5);
if (x1>2&& x2<(d-2)&&y1>2&&y1<(d-2)){
line(x1,y1,x2,y1)
}
x1=d-b*j
y1=d-b*sqrt(j+i)-i*b;
x2=d-b*j+random(3,5);
if (x1>2&& x2<(d-2)&&y1>2&&y1<(d-2)){
line(x1,y1,x2,y1)
}
}
}
}
if(n===10){
a=int(random(8,20))
b=int(random(20,25))
for(let j=1;j<=a;j++) {
for(let i = 0; i<=b-(j*2);i++){
x1=i*d/b
x2=x1 -random(3,5)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2){
line(x1,d/a*j,x2,d/a*j)
}
y1=d-i*d/b
y2=y1 -random(3,5)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2){
line(d-d/a*j,y2,d-d/a*j,y1)
}
}
}
a=int(random(8,20))
b=int(random(20,25))
for(let j=1;j<=a;j++) {
for(let i = 0; i<=b-(j*2);i++){
x1=i*d/b
x2=x1 -random(3,5)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2){
line(x1,d/a*j,x2,d/a*j)
}
y1=d-i*d/b
y2=y1 -random(3,5)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2){
line(d-d/a*j,y2,d-d/a*j,y1)
}
}
}
}
if(n===11){
a=int(random(8,20))
b=int(random(15,30))
for(let j=0;j<=a;j++) {
for(let i = 0; i<=b-(j*2);i++){
x1=d-i*d/b
x2=x1 +random(3,5)
if (x1>1&& x2<(d)&&y1>2&&y2<(d)){
line(x1,d/a*j/2,x2,d/a*j/2)
}
y1=d-i*d/b
y2=y1 -random(3,5)
if (x1>2&& x2<(d)&&y1>2&&y2<(d)){
line(d-d/a*j/2,y2,d-d/a*j/2,y1)
}
x1=i*d/b
x2=x1 -random(3,5)
if (x1>2&& x2<(d)&&y1>2&&y2<(d)){
line(x1,d-d/a*j/2,x2,d-d/a*j/2)
}
y1=i*d/b
y2=y1 -random(3,5)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(d/a*j/2,y2,d/a*j/2,y1)
}
}
}
}
if(n===12){
m=int(random(10,15));
a=int(random(10,30));
b=int(random(5,15));
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.5){
if(j%2===0){
x1=d/a*i
y1=d/b*j+m*cos(i-0.05)*sin(i/2)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*cos(i+0.2)*sin(i/2)
}else{
x1=d/a*i
y1=d/b*j-m*cos(i-0.05)*sin(i/2)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j-m*cos(i+0.2)*sin(i/2)
}
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
if(n===13){
m=int(random(10,15));
a=int(random(10,30));
b=int(random(5,15));
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.5){
if(j%2===0){
x1=d/a*i
y1=d/b*j+m*sin(i-0.05)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*cos(i/2+0.2)
}else{
x1=d/a*i
y1=d/b*j-m*sin(i-0.05)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j-m*cos(i/2+0.2)
}
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
if(n===14){
m=int(random(10,15));
a=int(random(10,30));
b=int(random(5,15));
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.5){
if(j%2===0){
x1=d/a*i
y1=d/b*j+m*sin(i-0.05)-m/2*sin(i)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j+m*sin(i-0.01)-m/2*sin(i)
}else{
x1=d/a*i
y1=d/b*j-m*cos(i-0.05)*cos(i/3)
x2=d/a*(i+1)-random(3,4)
y2=d/b*j-m*sin(i+0.2)
}
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
if(n===15){
m=int(random(10,20));
a=int(random(5,6));
b=int(random(5,10));
for(let j=1;j<b;j++)
for(let i=0;i<a;i+=0.5){
if(j%2===0){
x1=d/b*i+m*sin(i/2-0.05)
y1=d/b*j+m*cos(i/2-0.05)
x2=d/b*i+m*sin(i/2-0.01)
y2=d/b*j+m*cos(i/3-0.01)
}else{
x1=d-d/b*i+m*sin(i/2-0.05)
y1=d/b*j+m*cos(i/2-0.05)
x2=d-d/b*i+m*sin(i/2-0.01)
y2=d/b*j+m*cos(i/3-0.01)
}
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(y1,x1,y2,x2)
}
}
}
if(n===16){
m=int(random(10,20));
a=int(random(50,82));
b=int(random(5,10));
f=random(-6,6)
for(let j=-a/2;j<a/2;j+=5)
for(let i=0;i<a;i++){
x1=d/2+i*d/(a-j)*sin(i/f-0.05)
y1=d/2+i*d/(a-j)*cos(i/f-0.05)
x2=d/2+i*d/(a-j)*sin(i/f-0.01)
y2=d/2+i*d/(a-j)*cos(i/f-0.01)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
if(n===17){
m=int(random(10,20));
a=int(random(80,142));
b=int(random(5,10));
f=random(-6,6)
for(let j=-a/2;j<a/2;j+=5)
for(let i=0;i<a;i++){
x1=d/2+i*d/(a-j)
y1=d/2+i*d/(a-j)*cos(i-0.05)
x2=d/2+i*d/(a-j)
y2=d/2+i*d/(a-j)*cos(i-0.01)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(y1,x1,y2,x2)
}
}
for(let i=10;i<m*int(random(2,5));i+=int(random(5,10))){
for(let j=0;j<TWO_PI;j+=0.1){
h=random(1,5)
x1=2*d/3+(i+h)*sin(j+random(0.05));
y1=d/3+(i+h)*cos(j+random(0.05));
x2=2*d/3+(i+h)*sin(j+random(0.2));
y2=d/3+(i+h)*cos(j+random(0.2));
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
for(let i=2;i<12;i++){
for(let j=0;j<TWO_PI;j+=0.3){
x1=2*d/3+(i)*sin(j);
y1=d/3+(i)*cos(j);
x2=2*d/3+(i)*sin(j+0.1);
y2=d/3+(i)*cos(j+0.1);
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2&&y2>2&&y1<d-2){
line(x1,y1,x2,y2)
}
}
}
}
if(n===18){
a=int(random(20,32));
b=int(random(5,10));
f=random(3,5)
for(let j=0;j<a;j+=0.7)
for(let i=0;i<PI;i+=0.1){
x1=j*d/a*sin(i-0.05)
y1=j*d/(a)*cos(-i-0.05-f)
x2=j*d/a*sin(i-0.01)
y2=j*d/(a)*cos(-i-0.01-f)
if (x1>2&& x2<d-2&&x2>0&&y1>2&&y2<d-2){
line(x1,y1,x2,y2)
}
}
}
pop()
}
function border(){
for(let i = 0; i<12;i++){
x1=i*d/12-random(2,5)
x2=x1+d/12 - 1-random(2,5)
line(x1,0,x2,0)
x1=i*d/12-random(2,5)
x2=x1+d/12 - 1-random(2,5)
line(x1,d,x2,d)
x1=i*d/12 - 1
x2=x1+d/12 - 1-random(2,5)
line(d,x1,d,x2)
x1=i*d/12+random(2,5)
x2=x1+d/12 + -random(2,5)
line(0,x1,0,x2)
}
}
function mousePressed(){
t=!t
setup()
draw()
}
function keyPressed(){
if(keyCode===38){
if(s<25){
s++
}else{
s=2
}
t=true
setup()
draw()
}
if(keyCode===40){
if(s>=2){
s--
}else{
s=10
}
t=true
setup()
draw()
}
if(keyCode===83){
save(cnv,'sashiko','png')
}
if(keyCode===32){
setup()
draw()
}
}