int baseX = 100; int baseY = 125; int X_BD = 0; int Y_BD = 0; float X_LD = 0; float Y_LD = 0; float X_RD = 0; float Y_RD = 0; float Radian_C = 0; float Radian_L = 0; float Radian_R = 0; float Distance_C = 0; float Distance_L = 0; float Distance_R = 0; float moveXC = 0; float moveYC = 0; float moveXL = 0; float moveYL = 0; float moveXR = 0; float moveYR = 0; void setup() { size(200,250); } void draw(){ X_BD = mouseX - baseX; Y_BD = mouseY - baseY; Radian_C = atan2(Y_BD,X_BD); Distance_C = sqrt(X_BD * X_BD + Y_BD * Y_BD); if (Distance_C > 100){ moveXC = 2.5 * cos(Radian_C); moveYC = 2.5 * sin(Radian_C); }else{ moveXC = Distance_L/40 * cos(Radian_C); moveYC = Distance_L/40 * sin(Radian_C); } X_LD = mouseX - (baseX-5 + moveXC); Y_LD = mouseY - (baseY-35 + moveYC); X_RD = mouseX - (baseX+20 + moveXC); Y_RD = mouseY - (baseY-35 + moveYC); Radian_L = atan2(Y_LD,X_LD); Radian_R = atan2(Y_RD,X_RD); Distance_L = sqrt(X_LD*X_LD + Y_LD*Y_LD); Distance_R = sqrt(X_RD*X_RD + Y_LD*Y_RD); if (Distance_L > 7){ moveXL = 7 * cos(Radian_L); moveYL = 7 * sin(Radian_L); }else{ moveXL = Distance_L * cos(Radian_L); moveYL = Distance_L * sin(Radian_L); } if (Distance_R > 7){ moveXR = 7 * cos(Radian_R); moveYR = 7 * sin(Radian_R); }else{ moveXR = Distance_R * cos(Radian_R); moveYR = Distance_R * sin(Radian_R); } rectMode(CENTER); fill(125); noStroke(); //background stroke(0); rect(baseX,baseY,baseX * 2,baseY * 2); //chonmage fill(255); stroke(0); rect(baseX - 20 - moveXC,baseY - 65 - moveYC,10,50); fill(0); rect(baseX - 20 - moveXC,baseY - 90 - moveYC,15,15); //body fill(255); rect(baseX,baseY,70,130); //legs rect(baseX-15 + moveXC,baseY+75,10,20); rect(baseX+10 - moveXC,baseY+75,10,20); //face rectMode(CORNERS); noStroke(); //eye_L fill(0); ellipse(baseX-5 + moveXC + moveXL,baseY-35 + moveYC + moveYL,8,24); //eye_R ellipse(baseX+20 + moveXC + moveXR,baseY-35+ moveYC + moveYR,8,24); //deko fill(255); rect(baseX-34,baseY-64,baseX+34,baseY-40+ moveYC); //sita_mabuta rect(baseX-34,baseY-25 + moveYC,baseX+34,baseY+ moveYC); //ue_mabuta stroke(0); line(baseX-15 + moveXC,baseY-41+ moveYC,baseX+5 + moveXC,baseY-41+ moveYC); line(baseX+10 + moveXC,baseY-41+ moveYC,baseX+30 + moveXC,baseY-41+ moveYC); //mayuge line(baseX-15 + moveXC,baseY-48+ moveYC,baseX+5 + moveXC,baseY-45+ moveYC); line(baseX+5 + moveXC,baseY-45+ moveYC,baseX+5 + moveXC,baseY-50+ moveYC); line(baseX+10 + moveXC,baseY-45+ moveYC,baseX+30 + moveXC,baseY-48+ moveYC); //mouth line(baseX-5 + moveXC,baseY-10+ moveYC,baseX+20 + moveXC,baseY-10+ moveYC); //kimono_left noStroke(); fill(180); triangle(baseX + moveXC,baseY + moveYC,baseX + 30,baseY+40,baseX + moveXC,baseY+40); stroke(180); rect(baseX - 35,baseY + (moveYC/2.5),baseX + moveXC,baseY+40); stroke(0); line(baseX + moveXC,baseY + moveYC,baseX + 30,baseY+40); line(baseX + moveXC,baseY + moveYC,baseX-35,baseY + moveYC); //kimono_right noStroke(); triangle(baseX+35,baseY,baseX-10 + moveXC,baseY+40,baseX+35,baseY+40); stroke(0); line(baseX+35,baseY,baseX-10 + moveXC,baseY+40); //hakama fill(100); rect(baseX - 35,baseY+40,baseX+35,baseY+50); rect(baseX - 35,baseY+50,baseX+35,baseY+65); //arm_L fill(255); line(baseX-25 + moveXC,baseY+5,baseX-20 + moveXC,baseY+25); line(baseX+5 + moveXC,baseY,baseX-20 + moveXC,baseY+25); ellipse(baseX+10 + moveXC,baseY,10,5); //arm_R line(baseX+35,baseY+5,baseX+45 - moveXC,baseY+20); line(baseX+30 + moveXC,baseY+35,baseX+45 - moveXC,baseY+20); ellipse(baseX+30 + moveXC,baseY+35,5,10); }