오늘은 닫힌 도형 그리기 복습을 위한 응용 작품을 만들어 보겠습니다!!!
회전각 크기를 조절하여 원형부터 9각형까지 표현해 보겠습니다.
꼭지점을 연결한 도형과 점들의 집함체, 두 버전으로 만들어 볼게요~^^*
[삼각형: 2파이/3]
[사각형: 2파이/4 = 파이/2]
[오각형: 2파이/5]
[육각형: 2파이/6 = 파이/3]
[칠각형: 2파이/7]
[팔각형: 2파이/8 = 파이/4]
[구각형: 2파이/9]
을 회전각 증가량으로 설정해 보았습니다~.
꼭지점이 많아질 수록 형태를 쉽게 볼 수 있도록 모양의 구겨짐 정도를 줄여나갔습니다~.
마우스/손가락을 자유롭게 움직이며 도형의 형태 변화시킬 수 있습니다~~^^*.
//수정이 쉽도록 주요변수는 글로벌 변수로 프로그램 상단에 설정하고자 합니다.
//회전각 빗변의 기본길이와 오프셋 최소/최대값을 글로벌 변수로 설정하겠습니다.
let r = 0;
let Min = -50; let Max = 50;
//16개 물체의 중점과 모양 구겨지는 정도를 글로벌 변수로 설정하겠습니다.
let aXcenter = 50; let aYcenter = 50; let aRandom = 8;
let bXcenter = 150; let bYcenter = 50; let bRandom = 7;
let cXcenter = 250; let cYcenter = 50; let cRandom = 7;
let dXcenter = 350; let dYcenter = 50; let dRandom = 6;
let eXcenter = 50; let eYcenter = 150; let eRandom = 6;
let fXcenter = 150; let fYcenter = 150; let fRandom = 5;
let gXcenter = 250; let gYcenter = 150; let gRandom = 5;
let hXcenter = 350; let hYcenter = 150; let hRandom = 4;
let iXcenter = 50; let iYcenter = 250; let iRandom = 4;
let jXcenter = 150; let jYcenter = 250; let jRandom = 3;
let kXcenter = 250; let kYcenter = 250; let kRandom = 3;
let lXcenter = 350; let lYcenter = 250; let lRandom = 2;
let mXcenter = 50; let mYcenter = 350; let mRandom = 2;
let nXcenter = 150; let nYcenter = 350; let nRandom = 1;
let oXcenter = 250; let oYcenter = 350; let oRandom = 1;
let pXcenter = 350; let pYcenter = 350; let pRandom = 0;
//회전각 크기를 조정하여 원형부터 9각형까지 만들어 보겠습니다.
function setup() {
createCanvas(400, 400);
}
function draw() {
background(10);
let xWidth = map(mouseX, 0, width, Min, Max);
let yWidth = map(mouseY, 0, height, Min, Max);
push();
translate(aXcenter,aYcenter);
strokeWeight(1);
stroke(255, 125, 100);
fill(100, 125, 255);
beginShape();
for(let a = 0; a < TWO_PI; a+= 0.01){
let x = (r+xWidth)*cos(a) + random(-aRandom, aRandom);
let y = (r+yWidth)*sin(a) + random(-aRandom, aRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(bXcenter,bYcenter);
strokeWeight(1);
stroke(100, 125, 255);
beginShape();
for(let a = 0; a < TWO_PI; a+= 0.01){
let x = (r+xWidth)*cos(a) + random(-bRandom, bRandom);
let y = (r+yWidth)*sin(a) + random(-bRandom, bRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(cXcenter,cYcenter);
strokeWeight(1);
stroke(255, 125, 100);
fill(100, 255, 125);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/3){
let x = (r+xWidth)*cos(a) + random(-cRandom, cRandom);
let y = (r+yWidth)*sin(a) + random(-cRandom, cRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(dXcenter,dYcenter);
strokeWeight(10);
//fill(125, 255, 100);
stroke(100, 255, 125);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/3){
let x = (r+xWidth)*cos(a) + random(-dRandom, dRandom);
let y = (r+yWidth)*sin(a) + random(-dRandom, dRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(eXcenter,eYcenter);
strokeWeight(3);
fill(255, 255, 255);
stroke(255, 0, 0);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/2){
let x = (r+xWidth)*cos(a) + random(-gRandom, gRandom);
let y = (r+yWidth)*sin(a) + random(-gRandom, gRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(fXcenter,fYcenter);
strokeWeight(10);
//fill(255, 255, 255);
stroke(255, 255, 255);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/2){
let x = (r+xWidth)*cos(a) + random(-fRandom, fRandom);
let y = (r+yWidth)*sin(a) + random(-fRandom, fRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(gXcenter,gYcenter);
strokeWeight(4);
fill(255, 255, 100);
stroke(100,100, 255);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/5){
let x = (r+xWidth)*cos(a) + random(-gRandom, gRandom);
let y = (r+yWidth)*sin(a) + random(-gRandom, gRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(hXcenter,hYcenter);
strokeWeight(10);
//fill(255, 255, 100);
stroke(255,255, 100);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/5){
let x = (r+xWidth)*cos(a) + random(-hRandom, hRandom);
let y = (r+yWidth)*sin(a) + random(-hRandom, hRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(iXcenter,iYcenter);
strokeWeight(3);
fill(50, 100, 200);
stroke(255,255, 100);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/3){
let x = (r+xWidth)*cos(a) + random(-iRandom, iRandom);
let y = (r+yWidth)*sin(a) + random(-iRandom, iRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(jXcenter,jYcenter);
strokeWeight(10);
stroke(50, 100, 200);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/3){
let x = (r+xWidth)*cos(a) + random(-jRandom, jRandom);
let y = (r+yWidth)*sin(a) + random(-jRandom, jRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(kXcenter,kYcenter);
strokeWeight(3);
stroke(50, 100, 200);
noFill();
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/7){
let x = (r+xWidth)*cos(a) + random(-kRandom, kRandom);
let y = (r+yWidth)*sin(a) + random(-kRandom, kRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(lXcenter,lYcenter);
strokeWeight(10);
stroke(255, 100, 200);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/7){
let x = (r+xWidth)*cos(a) + random(-lRandom, lRandom);
let y = (r+yWidth)*sin(a) + random(-lRandom, lRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(mXcenter,mYcenter);
strokeWeight(4);
stroke(255);
fill(255, 100, 200);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/4){
let x = (r+xWidth)*cos(a) + random(-mRandom, mRandom);
let y = (r+yWidth)*sin(a) + random(-mRandom, mRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(nXcenter,nYcenter);
strokeWeight(10);
stroke(255,0,0);
beginShape();
for(let a = 0; a < TWO_PI; a+= PI/4){
let x = (r+xWidth)*cos(a) + random(-nRandom, nRandom);
let y = (r+yWidth)*sin(a) + random(-nRandom, nRandom);
point(x,y);
}
endShape(CLOSE);
pop();
push();
translate(oXcenter,oYcenter);
strokeWeight(4);
stroke(255, 125, 100);
fill(100, 125, 255);
//stroke(255,0,0);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/9){
let x = (r+xWidth)*cos(a) + random(-oRandom, oRandom);
let y = (r+yWidth)*sin(a) + random(-oRandom, oRandom);
vertex(x,y);
}
endShape(CLOSE);
pop();
push();
translate(pXcenter,pYcenter);
strokeWeight(10);
stroke(255, 125, 100);
beginShape();
for(let a = 0; a < TWO_PI; a+= 2*PI/9){
let x = (r+xWidth)*cos(a) + random(-pRandom, pRandom);
let y = (r+yWidth)*sin(a) + random(-pRandom, pRandom);
point(x,y);
}
endShape(CLOSE);
pop();
}
오늘은 이번 주에 배운 내용을 REMEBER하는 시간을 가져 보았어요~^^*
이번 주 공부 내용을 잘 REMEMBER하기로 해요~^^*
오늘도 함께 코딩 공부해 주셔서 감사합니다~^^*
오늘 하루 즐거운 시간 보내시구요~^^*
우리 내일 또 만나서 공부 같이 하기로 해요~^^*
네~~ 꿈은 이루어 집니다~~!!
댓글 남기기