java 분형 그리기 코헨 눈꽃 곡선(코헨 곡선) 코드 공유
public void draw1(int x1, int y1, int x2, int y2,int depth) {// keleyi.com
g.drawLine(x1, y1, x2, y2);
if (depth<=1)
return;
else {//
double x11 = (x1 * 2 + x2) / 3;
double y11 = (y1 * 2 + y2) / 3;
double x22 = (x1 + x2 * 2) / 3;
double y22 = (y1 + y2 * 2) / 3;
double x33 = (x11 + x22) / 2 - (y11 - y22) * Math.sqrt(3) / 2;
double y33 = (y11 + y22) / 2 - (x22 - x11) * Math.sqrt(3) / 2;
g.setColor(j.getBackground());
g.drawLine((int) x1, (int) y1, (int) x2, (int) y2);
g.setColor(Color.black);
draw1((int) x1, (int) y1, (int) x11, (int) y11,depth-1);
draw1((int) x11, (int) y11, (int) x33, (int) y33,depth-1);
draw1((int) x22, (int) y22, (int) x2, (int) y2,depth-1);
draw1((int) x33, (int) y33, (int) x22, (int) y22,depth-1);
}
}
정사각형:
public void draw2(int x1, int y1, int m,int depth) {// keleyi.com
g.fillRect(x1, y1, m, m);
m = m / 3;
if (depth<=1)
return;
else{
double x11 = x1 - 2 * m;
double y11 = y1 - 2 * m;
double x22 = x1 + m;
double y22 = y1 - 2 * m;
double x33 = x1 + 4 * m;
double y33 = y1 - 2 * m;
double x44 = x1 - 2 * m;
double y44 = y1 + m;
double x55 = x1 + 4 * m;
double y55 = y1 + m;
double x66 = x1 - 2 * m;
double y66 = y1 + 4 * m;
double x77 = x1 + m;
double y77 = y1 + 4 * m;
double x88 = x1 + 4 * m;
double y88 = y1 + 4 * m;
draw2((int) x11, (int) y11, (int) m,depth-1);
draw2((int) x22, (int) y22, (int) m,depth-1);
draw2((int) x33, (int) y33, (int) m,depth-1);
draw2((int) x44, (int) y44, (int) m,depth-1);
draw2((int) x55, (int) y55, (int) m,depth-1);
draw2((int) x66, (int) y66, (int) m,depth-1);
draw2((int) x77, (int) y77, (int) m,depth-1);
draw2((int) x88, (int) y88, (int) m,depth-1);
}
}
셰익스피어 삼각형:
public void draw3(int x1,int y1,int x2,int y2,int x3,int y3,int depth){// keleyi.com
double s = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
g.drawLine(x1,y1,x2,y2);
g.drawLine(x2,y2,x3,y3);
g.drawLine(x1,y1,x3,y3);
// if(s<3)
// return;
if (depth<=1)
return;
else
{
/*
*
*/
double x11=(x1*3+x2)/4;
double y11=y1-(s/4)*Math.sqrt(3);
double x12=(x1+x2*3)/4;
double y12=y11;
double x13=(x1+x2)/2;
double y13=y1;
/*
*
*/
double x21=x1-s/4;
double y21=(y1+y3)/2;
double x22=x1+s/4;
double y22=y21;
double x23=x1;
double y23=y3;
/*
*
*/
double x31=x2+s/4;
double y31=(y1+y3)/2;
double x32=x2-s/4;
double y32=y21;
double x33=x2;
double y33=y3;
draw3((int)x11,(int)y11,(int)x12,(int)y12, (int)x13, (int)y13, depth-1);
draw3((int)x21,(int)y21,(int)x22,(int)y22, (int)x23, (int)y23, depth-1);
draw3((int)x31,(int)y31,(int)x32,(int)y32, (int)x33, (int)y33, depth-1);
}
}
코헨 곡선은 외형이 눈꽃과 같은 기하학적 곡선이기 때문에 눈꽃 곡선이라고도 부른다. 이것은 분형 곡선 중의 하나이다. 구체적인 화법은 다음과 같다. 1. 임의로 정삼각형을 그리고 각 쪽을 3등분한다.2. 3등분 후 한쪽 가운데 한 단락을 취하여 바깥쪽으로 정삼각형을 만들고 이'중간 한 단락'을 지운다.3. 상기 두 단계를 반복하여 더 작은 삼각형을 그린다.4. 무한히 반복될 때까지 그려진 곡선을 코흐 곡선이라고 한다.소결: 분형은 매우 재미있는 것이다. 자신의 기묘한 상상에 따라 매우 아름다운 도형을 많이 그릴 수 있다. 이미 존재하는 것이 아니라 너는 너 자신만의 도형을 창조할 수 있다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.