kites_Day20
kiteArrayXkiteArrayYkiteArrayTkiteArrayUnKiteoldxoldyoldx2oldy2drawKitestepKitecloud
let kiteArrayX = [];
let kiteArrayY = [];
let kiteArrayT = [];
let kiteArrayU = [];
let nKite = 1,oldx = 0,oldy= 0,oldx2=0,oldy2=0,cnt = 0;
function setup() {
createCanvas(500, 500);
angleMode(DEGREES);
kiteArrayX[0]=-40
kiteArrayY[0]=-40
kiteArrayT[0]=20
kiteArrayU[0]=0
oldx1 = random(-width/2,width/2)
oldy1 = random(-width/3,0)
oldx2 = random(-width/2,0)
oldx3 = random(-width/3,100)
}
function draw() {
translate(width/2,width/2)
background(0,200,220);
fill(50,220,180)
ellipse(0,width/2,width*2,100)
cloud(oldx1,oldy1);
cloud(oldx2,oldy2);
stroke(0);
push()
if (nKite>30){
translate(0,-cnt)
cnt = cnt+1
}
for (let i=0;i<nKite;i++){
t = atan(-kiteArrayX[i]/(-width/2-kiteArrayY[i]))
drawKite(kiteArrayX[i],kiteArrayY[i],kiteArrayT[i])
}
stepKite()
fill(100,100,100)
circle(0,width/2-10,20)
pop()
if(cnt > width){
cnt = 0
nKite = 1
kiteArrayX = []
kiteArrayY = []
kiteArrayT = []
kiteArrayU = []
kiteArrayX[0]=random(-100,100)
kiteArrayY[0]=random(-100,100)
kiteArrayT[0]=20
kiteArrayU[0]=0
}
}
function drawKite(x,y,c){
push()
fill(80+c/2,140-c/2,255-c/2)
translate(x,y)
if(x>0){
rotate(90-atan((y-width/2)/(-x)))
}
if(x<=0){
rotate(270-atan((y-width/2)/(-x)))
}
beginShape()
vertex(0,-50)
vertex(20,-40)
vertex(0,0)
vertex(-20,-40)
endShape(CLOSE)
pop()
line(x,y,0,width/2)
}
function mousePressed(){
nKite=nKite+1
kiteArrayX[nKite-1]=-width/2+mouseX
kiteArrayY[nKite-1]=-width/2+mouseY
kiteArrayT[nKite-1]=-width/2+mouseX
kiteArrayU[nKite-1]=-width/2+mouseY
}
function stepKite(){
t = frameCount;
for (let i=0;i<nKite;i++){
kiteArrayX[i]=kiteArrayX[i]+kiteArrayT[i]*sin(t+kiteArrayX[i])/1000
kiteArrayY[i]=kiteArrayY[i]+kiteArrayU[i]*cos(t)/1000
}
}
function cloud(a,b){
oldx = a
oldy = b
fill(255,255,255,150)
noStroke()
push()
translate(-width+(frameCount/2)%(width*3),0)
beginShape()
for (let i=0;i<20;i++){
vertex(oldx,oldy)
oldx = oldx-30*sin(10*i) + 5*cos(6*i);
oldy = oldy-5*cos(10*i)
}
endShape(CLOSE)
pop()
}