우리라는 첫 번째 프로그램을 보았다 “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); } } }
반드시 연결된 댓글을 달다.