java 분형 그리기 코헨 눈꽃 곡선(코헨 곡선) 코드 공유

먼저 우리는 예를 들어 브로콜리의 작은 묶음은 전체 꽃다발의 한 가지이고 서로 다른 척도에서 그들은 비슷한 외형을 가지고 있음을 볼 수 있다.다시 말하면 비교적 작은 가지는 적당한 비율을 확대한 후에 전체와 거의 완전히 일치하는 꽃다발을 얻을 수 있다.그래서 우리는 브로콜리 족자가 분형의 실례라고 말할 수 있다.분형은 일반적으로 다음과 같은 특징이 있다. 임의의 작은 척도에서 정밀한 구조를 가질 수 있다.너무 불규칙해서 전통적인 오씨 기하학적 언어로 묘사하기 어렵다.(적어도 대략적이거나 임의로) 비슷한 호스토브 비트가 토폴로지 비트보다 크다.간단한 귀속 정의가 있다.(i)분형집은 임의의 작은 척도 아래의 비례 디테일을 가지고 있거나 정교한 구조를 가지고 있다.(ii)분형집은 전통적인 기하학적 언어로 묘사할 수 없다. 이것은 어떤 조건을 만족시키는 점의 궤적도 아니고 간단한 방정식의 해집도 아니다.(iii)분형집은 어떤 유사 형식을 가지고 근사한 유사 또는 통계적인 유사일 수 있다.(iv) 일반적으로 분형집의'분형비수'는 그에 상응하는 토폴로지 비수보다 엄격하다.(v) 대부분의 흥미로운 상황에서 분형집은 매우 간단한 방법으로 정의되어 변환의 교체로 발생할 수 있다.자바로 분형을 쓸 때 서로 다른 도형은 서로 다른 화법 호출에 따라 귀속된다. 예를 들어 코흐 곡선:

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. 무한히 반복될 때까지 그려진 곡선을 코흐 곡선이라고 한다.
소결: 분형은 매우 재미있는 것이다. 자신의 기묘한 상상에 따라 매우 아름다운 도형을 많이 그릴 수 있다. 이미 존재하는 것이 아니라 너는 너 자신만의 도형을 창조할 수 있다!

좋은 웹페이지 즐겨찾기