그래프 PIZiadas

그래프 PIZiadas

내 세계가 속한.

재귀 프랙탈: 시 에르 핀 스키 삼각형 [JAVA]

triangulo_sierpinski우리라는 첫 번째 프로그램을 보았다 “DrawWorld” JAVA 프로그래밍 지향 그래픽에 우리를 소개. 의 기본적인 재귀 프랙탈을 생성하기 위해 이러한 기본 프로그램을 변경하자: El 시 에르 핀 스키 삼각형.

(참조 재귀 프랙탈이 생성 될 때)

그것은 누구의 측면 삼각형에서 재귀 적으로 내장되어 프랙탈입니다은 그 중간 점으로 분할된다. 이러한 새로운 점, 및 상기, 새로운 삼각형은 이전과 비슷한 구성된다.

우리는 삼각형 ABC에서 시작하고 우리는 양쪽의 중간 점을 얻는 경우 (MNP), 재귀의 다음 단계는 세 개의 삼각형을 구축하여 얻을 수있다: APN, PBM Y NMC.

시 에르 핀 스키 삼각형이 Hausdorff-Besicovitch의 프랙탈 차원 프랙탈 차원과 일치 homotecia igual의: 1,58496… ()

이러한 새로운 각 삼각형은 3 개로 분할되면, 우리는 반복적으로 새로운 그림을받을 것이다. 우리는 우리가 변수를 사용하여 제어 할 수있는 재귀의 새로운 수준을해야합니다 (nivel_de_recursividad) 우리의 프로그램.

함수를 정의 “paintRecursivo” (즉 메서드에서 호출 “페인트”) 어떤 점 우리 삼각형 기지에서, 그리고 재귀. 삼각 함수를 계산, 그림과 통화 자체를 세 번 도장, subtriangles 각각에 대해 하나.

각 함수 호출 재귀 값은 감소, 그 때문에이 경우 제로 재귀 수행 완료.

수입 java.applet.Applet의;
수입 java.awt.Graphics에;
/**
* @ 저자 호세 후안 알리아
*/
공공의 클래스 MainApp 확장 애플릿 {
 더블 XP1 = 300;
 더블 yp1 = 300;
 더블 XP2 = 10;
 더블 yp2 = 300;
 더블 sin60 = Math.sin 이런(3.14/3.);
 INT nivel_de_recursividad = 6;

 공공의 MainApp() { }

 공공의 정적 인  (끈[] 인수) { }

 공공 무효 페인트(그래픽 g){
   paintRecursivo(지,nivel_de_recursividad,XP1, yp1, XP2, yp2);
 }

 개인 무효 paintRecursivo(그래픽 g, INT 나는, 더블 xp12, 더블 yp12, 더블 xp22, 더블 yp22 ) {

 더블 DX =(xp22-xp12)/2.;
  더블 두 =(yp22-yp12)/2.;
  더블 XP32의 xp12   = DX-2 * DY의 *의 sin60;
  더블 yp32 yp12 =  2   DY *의 DX의 *의 sin60;

  더블 DX1의 =(xp22   xp12)/2.;
  더블 DY1 =(yp22   yp12)/2.;
  더블 DX2의 =(XP32   xp22)/2.;
  더블 DY2 =(yp32   yp22)/2.;
  더블 DX3의 =(xp12   XP32)/2.;
  더블 DY3 =(yp12   yp32)/2.;

  (나는<= 0){
   으로 g.drawLine((INT)xp12,(INT)yp12,(INT)xp22,(INT)yp22);
   으로 g.drawLine((INT)xp22,(INT)yp22,(INT)XP32,(INT)yp32);
   으로 g.drawLine((INT)XP32,(INT)yp32,(INT)xp12,(INT)yp12);
  }
  그렇지 않으면{
   paintRecursivo(지,I-1, xp12, yp12, DX1, DY1);
   paintRecursivo(지,I-1, DX1, DY1, xp22, yp22);
   paintRecursivo(지,I-1, DX3, DY3, DX2, DY2);
  }

 }
}
JAVA

Curso JAVA